Ejemplo n.º 1
0
 /**
  * Returns true if both DataTable are exactly the same.
  * Used in unit tests.
  * 
  * @param Piwik_DataTable $table1
  * @param Piwik_DataTable $table2
  * @return bool
  */
 public static function isEqual(Piwik_DataTable $table1, Piwik_DataTable $table2)
 {
     $rows1 = $table1->getRows();
     $rows2 = $table2->getRows();
     $table1->rebuildIndex();
     $table2->rebuildIndex();
     if ($table1->getRowsCount() != $table2->getRowsCount()) {
         return false;
     }
     foreach ($rows1 as $row1) {
         $row2 = $table2->getRowFromLabel($row1->getColumn('label'));
         if ($row2 === false || !Piwik_DataTable_Row::isEqual($row1, $row2)) {
             return false;
         }
     }
     return true;
 }
Ejemplo n.º 2
0
 /**
  * Method for the recursive descend
  *
  * @param array            $labelParts
  * @param Piwik_DataTable  $dataTable
  * @param bool             $date
  * @return Piwik_DataTable_Row|false
  */
 private function doFilterRecursiveDescend($labelParts, $dataTable, $date = false)
 {
     // search for the first part of the tree search
     $labelPart = array_shift($labelParts);
     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($row, $date);
     if ($subTable === null) {
         // no more subtables but label parts left => no match found
         return false;
     }
     return $this->doFilterRecursiveDescend($labelParts, $subTable, $date);
 }