renderTable($this->table); } protected function renderTable($table) { if(!($table instanceof Piwik_DataTable_Array)) { throw new Exception("RSS Feed only used on DataTable_Array"); } $idSite = Piwik_Common::getRequestVar('idSite', 1); $period = Piwik_Common::getRequestVar('period'); $currentUrl = Piwik_Url::getCurrentUrlWithoutFileName(); $piwikUrl = $currentUrl . "?module=Home&action=index&idSite=" . $idSite . "&period=" . $period; $out = ""; $moreRecentFirst = array_reverse($table->getArray(), true); foreach($moreRecentFirst as $date => $subtable ) { $timestamp = $table->metaData[$date]['timestamp']; $site = $table->metaData[$date]['site']; $pudDate = date('r', $timestamp); $dateUrl = date('Y-m-d', $timestamp); $thisPiwikUrl = htmlentities($piwikUrl . "&date=$dateUrl"); $siteName = $site->getName(); $title = $siteName . " on ". $date; $out .= "\t $pudDate $thisPiwikUrl $thisPiwikUrl $title http://piwik.org "; $out .= htmlspecialchars( $this->renderDataTable($subtable) ); $out .= "\n\t\n"; } $header = $this->getRssHeader(); $footer = $this->getRssFooter(); return $this->output( $header . $out . $footer); } protected function output($str) { @header("Content-Type: text/xml;charset=utf-8"); return $str; } protected function getRssFooter() { return "\t\n"; } protected function getRssHeader() { $generationDate = date('r'); $header = " piwik statistics - RSS http://piwik.org Piwik RSS feed $generationDate piwik en $generationDate"; return $header; } protected function renderDataTable($table) { if($table->getRowsCount() == 0) { return "Empty table
\n"; } if($table instanceof Piwik_DataTable_Simple && $table->getRowsCount() ==1) { $table->deleteColumn('label'); } $i = 1; $tableStructure = array(); /* * table = array * ROW1 = col1 | col2 | col3 | details | idSubTable * ROW2 = col1 | col2 (no value but appears) | col3 | details | idSubTable * subtable here */ $allColumns = array(); // echo $table; foreach($table->getRows() as $row) { foreach($row->getColumns() as $column => $value) { $allColumns[$column] = true; $tableStructure[$i][$column] = $value; } $i++; } /* // to keep the same columns order as the columns labelled with strings ksort($allColumns); //replace the label first if(isset($allColumns['label'])) { $allColumns = array_merge(array('label'=>true),$allColumns); } */ $html = "\n"; $html .= ""; $html .= "\n"; foreach($allColumns as $name => $toDisplay) { if($toDisplay !== false) { $html .= "\n\t"; } } $html .= "\n"; $colspan = count($allColumns); foreach($tableStructure as $row) { $html .= "\n\n"; foreach($allColumns as $name => $toDisplay) { if($toDisplay !== false) { $value = "-"; if(isset($row[$name])) { $value = urldecode($row[$name]); } $html .= "\n\t"; } } $html .= ""; } $html .= "\n\n
$name
$value
"; return $html; } }