Piwik\DataTable::rebuildIndex PHP 메소드

rebuildIndex() 공개 메소드

Rebuilds the index used to lookup a row by label
public rebuildIndex ( )
    public function rebuildIndex()
    {
        $this->rebuildIndexContinuously = true;
        foreach ($this->rows as $id => $row) {
            $label = $row->getColumn('label');
            if ($label !== false) {
                $this->rowsIndexByLabel[$label] = $id;
            }
        }
        if ($this->summaryRow) {
            $label = $this->summaryRow->getColumn('label');
            if ($label !== false) {
                $this->rowsIndexByLabel[$label] = DataTable::ID_SUMMARY_ROW;
            }
        }
        $this->indexNotUpToDate = false;
    }

Usage Example

예제 #1
0
 /**
  * Method for the recursive descend
  *
  * @param array $labelParts
  * @param DataTable $dataTable
  * @return Row|bool
  */
 private function doFilterRecursiveDescend($labelParts, $dataTable)
 {
     // we need to make sure to rebuild the index as some filters change the label column directly via
     // $row->setColumn('label', '') which would not be noticed in the label index otherwise.
     $dataTable->rebuildIndex();
     // search for the first part of the tree search
     $labelPart = array_shift($labelParts);
     $row = false;
     foreach ($this->getLabelVariations($labelPart) as $labelPart) {
         $row = $dataTable->getRowFromLabel($labelPart);
         if ($row !== false) {
             break;
         }
     }
     if ($row === false) {
         // not found
         return false;
     }
     // end of tree search reached
     if (count($labelParts) == 0) {
         return $row;
     }
     $subTable = $this->loadSubtable($dataTable, $row);
     if ($subTable === null) {
         // no more subtables but label parts left => no match found
         return false;
     }
     return $this->doFilterRecursiveDescend($labelParts, $subTable);
 }
All Usage Examples Of Piwik\DataTable::rebuildIndex