Browse Source

Fix and remove E_NOTICE when search_enabled is true - refs BT#10979

Angel Fernando Quiroz Campos 9 years ago
parent
commit
e4f80caca6

+ 3 - 2
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,

+ 1 - 1
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[] = '
-    <script type="text/javascript" src="'.api_get_path(WEB_LIBRARY_JS_PATH).'jquery.autocomplete.js"></script>
+    <!-- script type="text/javascript" src="'.api_get_path(WEB_LIBRARY_JS_PATH).'jquery.autocomplete.js"></script -->
     <script type="text/javascript" src="'.api_get_path(WEB_LIBRARY_JS_PATH).'search/search_widget.js"></script>
     <link rel="stylesheet" type="text/css" href="'.api_get_path(
             WEB_LIBRARY_JS_PATH

+ 26 - 15
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);

+ 2 - 2
main/newscorm/lp_list_search.php

@@ -146,12 +146,12 @@ if ($count > 0) {
 
         if ($mode == 'gallery') {
             $title = $a_prefix.str_replace('_',' ',$result['title']). $a_sufix;
-            $blocks[] = array(
+            $blocks[] = array(1 => 
                 $a_prefix .'<img src="'.$result['thumbnail'].'" />'. $a_sufix .'<br />'.$title.'<br />'.$result['author'],
             );
         } else {
             $title = '<div style="text-align:left;">'. $a_prefix . $result['title']. $a_sufix .(!empty($result['author']) ? ' '.$result['author'] : '').'<div>';
-            $blocks[] = array($title);
+            $blocks[] = array(1 => $title);
         }
     }
 }

+ 17 - 7
main/search/search_suggestions.php

@@ -10,12 +10,13 @@ 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;
 
     $em = Database::getManager();
     $queryParams = [];
 
+    $json = [];
     $q = Database::escape_string($q);
     $course = $em->find('ChamiloCoreBundle:Course', api_get_course_int_id());
 
@@ -40,7 +41,12 @@ function get_suggestions_from_search_engine($q)
     $data = array();
     $i = 0;
     foreach ($sql_result as $row) {
-        echo api_convert_encoding($row->getValue(), 'UTF-8', $charset) . "| value\n";
+        $value = api_convert_encoding($row->getValue(), 'UTF-8', $charset);
+        $json[] = [
+            'id' => $value,
+            'value' => $value,
+            'label' => $value
+        ];
 
         if ($i < 20) {
             $data[$row->getCourse()->getCode()][$row->getToolId()][$row->getRefId()] = 1;
@@ -113,20 +119,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);