コード例 #1
0
ファイル: Php.php プロジェクト: nnnnathann/piwik
 /**
  * Converts the simple data table to an array
  *
  * @param Piwik_DataTable_Simple  $table
  * @return array
  */
 protected function renderSimpleTable($table)
 {
     $array = array();
     $row = $table->getFirstRow();
     if ($row === false) {
         return $array;
     }
     foreach ($row->getColumns() as $columnName => $columnValue) {
         $array[$columnName] = $columnValue;
     }
     return $array;
 }
コード例 #2
0
ファイル: Csv.php プロジェクト: nnnnathann/piwik
 /**
  * Converts the output of the given simple data table
  *
  * @param Piwik_DataTable_Simple  $table
  * @param array                   $allColumns
  * @return string
  */
 protected function renderDataTable($table, &$allColumns = array())
 {
     if ($table instanceof Piwik_DataTable_Simple) {
         $row = $table->getFirstRow();
         if ($row !== false) {
             $columnNameToValue = $row->getColumns();
             if (count($columnNameToValue) == 1) {
                 // simple tables should only have one column, the value
                 $allColumns['value'] = true;
                 $value = array_values($columnNameToValue);
                 $str = 'value' . $this->lineEnd . $this->formatValue($value[0]);
                 return $str;
             }
         }
     }
     $csv = array();
     foreach ($table->getRows() as $row) {
         $csvRow = array();
         $columns = $row->getColumns();
         foreach ($columns as $name => $value) {
             //goals => array( 'idgoal=1' =>array(..), 'idgoal=2' => array(..))
             if (is_array($value)) {
                 foreach ($value as $key => $subValues) {
                     if (is_array($subValues)) {
                         foreach ($subValues as $subKey => $subValue) {
                             if ($this->translateColumnNames) {
                                 $subName = $name != 'goals' ? $name . ' ' . $key : Piwik_Translate('Goals_GoalX', $key);
                                 $columnName = $this->translateColumnName($subKey) . ' (' . $subName . ')';
                             } else {
                                 // goals_idgoal=1
                                 $columnName = $name . "_" . $key . "_" . $subKey;
                             }
                             $allColumns[$columnName] = true;
                             $csvRow[$columnName] = $subValue;
                         }
                     }
                 }
             } else {
                 $allColumns[$name] = true;
                 $csvRow[$name] = $value;
             }
         }
         if ($this->exportMetadata) {
             $metadata = $row->getMetadata();
             foreach ($metadata as $name => $value) {
                 if ($name == 'idsubdatatable_in_db') {
                     continue;
                 }
                 //if a metadata and a column have the same name make sure they dont overwrite
                 if ($this->translateColumnNames) {
                     $name = Piwik_Translate('General_Metadata') . ': ' . $name;
                 } else {
                     $name = 'metadata_' . $name;
                 }
                 $allColumns[$name] = true;
                 $csvRow[$name] = $value;
             }
         }
         if ($this->exportIdSubtable) {
             $idsubdatatable = $row->getIdSubDataTable();
             if ($idsubdatatable !== false && $this->hideIdSubDatatable === false) {
                 $csvRow['idsubdatatable'] = $idsubdatatable;
             }
         }
         $csv[] = $csvRow;
     }
     // now we make sure that all the rows in the CSV array have all the columns
     foreach ($csv as &$row) {
         foreach ($allColumns as $columnName => $true) {
             if (!isset($row[$columnName])) {
                 $row[$columnName] = '';
             }
         }
     }
     $str = '';
     // specific case, we have only one column and this column wasn't named properly (indexed by a number)
     // we don't print anything in the CSV file => an empty line
     if (sizeof($allColumns) == 1 && reset($allColumns) && !is_string(key($allColumns))) {
         $str .= '';
     } else {
         // render row names
         $str .= $this->getHeaderLine(array_keys($allColumns)) . $this->lineEnd;
     }
     // we render the CSV
     foreach ($csv as $theRow) {
         $rowStr = '';
         foreach ($allColumns as $columnName => $true) {
             $rowStr .= $this->formatValue($theRow[$columnName]) . $this->separator;
         }
         // remove the last separator
         $rowStr = substr_replace($rowStr, "", -strlen($this->separator));
         $str .= $rowStr . $this->lineEnd;
     }
     $str = substr($str, 0, -strlen($this->lineEnd));
     return $str;
 }