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$name | ";
}
}
$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$value | ";
}
}
$html .= "
";
}
$html .= "\n\n
";
return $html;
}
}