public function showResults($results, $pageNum = 0, $currentTable = false)
 {
     $startTime = DataManager::getDebugTime();
     $results = $this->sliceResultsForPage($results, $pageNum);
     $r = '';
     foreach ($results as $result) {
         if ($currentTable === false || $result->tableName != $currentTable) {
             //Start of a new section in results
             if ($currentTable !== false) {
                 //Close the previous section
                 $r .= html_writer::end_tag('ul');
             }
             //Section header in results
             $sectionDetails = $this->tableName($result->tableName);
             $r .= html_writer::tag('h3', $sectionDetails['icon'] . ' ' . $sectionDetails['title'], array('id' => 'searchresults-' . $result->tableName));
             //Show results from this table
             $r .= html_writer::start_tag('ul', array('class' => 'results'));
             $currentTable = $result->tableName;
         }
         $r .= $this->showResult($result->tableName, $result, $sectionDetails['icon']);
     }
     $r .= html_writer::end_tag('ul');
     $this->displayTime = DataManager::debugTimeTaken($startTime);
     return $r;
 }
 /**
  * Go through the array of results and remove those the user doesn't have permission to see
  */
 public function filterResults($removeHiddenResults = true)
 {
     //Site admin can see everything so don't bother filtering
     if (is_siteadmin()) {
         return;
     }
     $this->results['filtered'] = time();
     $startTime = DataManager::getDebugTime();
     //Check if each result is visible
     foreach ($this->results['results'] as $i => &$result) {
         $visible = $result->isVisible();
         if ($visible === null) {
             //null means it should never be displayed
             unset($this->results['results'][$i]);
         } elseif ($visible !== true) {
             if ($removeHiddenResults) {
                 unset($this->results['results'][$i]);
             } else {
                 $result->hiddenReason = $visible;
                 $result->hidden = true;
             }
         }
     }
     //Unset hanging references
     unset($result);
     $this->addTableInfoToResults($this->results);
     if (!$removeHiddenResults) {
         // Hidden results are included, but we want them to go to the bottom
         // Sort the results by 'tableName' then by 'hidden'
         $this->results['results'] = Utils::sortMultidimensionalArray($this->results['results'], "tableName ASC, hidden ASC");
     }
     $this->results['filterTime'] = DataManager::debugTimeTaken($startTime);
 }