Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'core/DataTable/Renderer/Html.php')
-rw-r--r--core/DataTable/Renderer/Html.php398
1 files changed, 188 insertions, 210 deletions
diff --git a/core/DataTable/Renderer/Html.php b/core/DataTable/Renderer/Html.php
index 11fbdbc1e3..1d620f74cc 100644
--- a/core/DataTable/Renderer/Html.php
+++ b/core/DataTable/Renderer/Html.php
@@ -1,10 +1,10 @@
<?php
/**
* Piwik - Open source web analytics
- *
+ *
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
+ *
* @category Piwik
* @package Piwik
*/
@@ -12,217 +12,195 @@
/**
* Simple HTML output
* Does not work with recursive DataTable (i.e., when a row can be associated with a subDataTable).
- *
+ *
* @package Piwik
* @subpackage Piwik_DataTable
*/
class Piwik_DataTable_Renderer_Html extends Piwik_DataTable_Renderer
{
- protected $tableId;
- protected $allColumns;
- protected $tableStructure;
- protected $i;
-
- /**
- * Sets the table id
- *
- * @param string $id
- */
- function setTableId($id)
- {
- $this->tableId = str_replace('.', '_', $id);
- }
-
- /**
- * Output HTTP Content-Type header
- */
- protected function renderHeader()
- {
- @header('Content-Type: text/html; charset=utf-8');
- }
-
- /**
- * Computes the dataTable output and returns the string/binary
- *
- * @return string
- */
- function render()
- {
- $this->renderHeader();
- $this->tableStructure = array();
- $this->allColumns = array();
- $this->i = 0;
-
- return $this->renderTable($this->table);
- }
-
- /**
- * Computes the exception output and returns the string/binary
- *
- * @return string
- */
- function renderException()
- {
- $this->renderHeader();
- $exceptionMessage = $this->getExceptionMessage();
- return nl2br($exceptionMessage);
- }
-
- /**
- * Computes the output for the given data table
- *
- * @param Piwik_DataTable $table
- * @return string
- */
- protected function renderTable($table)
- {
- if (is_array($table)) // convert array to DataTable
- {
- $table = Piwik_DataTable::makeFromSimpleArray($table);
- }
-
- if($table instanceof Piwik_DataTable_Array)
- {
- foreach($table->getArray() as $date => $subtable )
- {
- if ($subtable->getRowsCount()) {
- $this->buildTableStructure($subtable, '_'. $table->getKeyName(), $date);
- }
- }
- }
- else // Piwik_DataTable_Simple
- {
- if($table->getRowsCount())
- {
- $this->buildTableStructure($table);
- }
- }
-
- $out = $this->renderDataTable();
- return $out;
- }
-
- /**
- * Adds the given data table to the table structure array
- *
- * @param Piwik_DataTable_Simple $table
- * @param null|string $columnToAdd
- * @param null|string $valueToAdd
- * @throws Exception
- */
- protected function buildTableStructure($table, $columnToAdd = null, $valueToAdd = null)
- {
- $i = $this->i;
- $someMetadata = false;
- $someIdSubTable = false;
-
- /*
- * table = array
- * ROW1 = col1 | col2 | col3 | metadata | idSubTable
- * ROW2 = col1 | col2 (no value but appears) | col3 | metadata | idSubTable
- */
- if(!($table instanceof Piwik_DataTable))
- {
- throw new Exception("HTML Renderer does not work with this combination of parameters");
- }
- foreach($table->getRows() as $row)
- {
- if(isset($columnToAdd) && isset($valueToAdd))
- {
- $this->allColumns[$columnToAdd] = true;
- $this->tableStructure[$i][$columnToAdd] = $valueToAdd;
- }
-
- foreach($row->getColumns() as $column => $value)
- {
- $this->allColumns[$column] = true;
- $this->tableStructure[$i][$column] = $value;
- }
-
- $metadata = array();
- foreach($row->getMetadata() as $name => $value)
- {
- if(is_string($value)) $value = "'$value'";
- $metadata[] = "'$name' => $value";
- }
-
- if(count($metadata) != 0)
- {
- $someMetadata = true;
- $metadata = implode("<br />", $metadata);
- $this->tableStructure[$i]['_metadata'] = $metadata;
- }
-
- $idSubtable = $row->getIdSubDataTable();
- if(!is_null($idSubtable))
- {
- $someIdSubTable = true;
- $this->tableStructure[$i]['_idSubtable'] = $idSubtable;
- }
-
- $i++;
- }
- $this->i = $i;
-
- $this->allColumns['_metadata'] = $someMetadata;
- $this->allColumns['_idSubtable'] = $someIdSubTable;
- }
-
- /**
- * Computes the output for the table structure array
- *
- * @return string
- */
- protected function renderDataTable()
- {
- $html = "<table ". ($this->tableId ? "id=\"{$this->tableId}\" " : "") ."border=\"1\">\n<thead>\n\t<tr>\n";
-
- foreach($this->allColumns as $name => $toDisplay)
- {
- if($toDisplay !== false)
- {
- if($name === 0)
- {
- $name = 'value';
- }
- if($this->translateColumnNames)
- {
- $name = $this->translateColumnName($name);
- }
- $html .= "\t\t<th>$name</th>\n";
- }
- }
-
- $html .= "\t</tr>\n</thead>\n<tbody>\n";
-
- foreach($this->tableStructure as $row)
- {
- $html .= "\t<tr>\n";
- foreach($this->allColumns as $name => $toDisplay)
- {
- if($toDisplay !== false)
- {
- $value = "-";
- if(isset($row[$name]))
- {
- if(is_array($row[$name]))
- {
- $value = "<pre>".self::formatValueXml(var_export($row[$name], true)) . "</pre>";
- }
- else
- {
- $value = self::formatValueXml($row[$name]);
- }
- }
-
- $html .= "\t\t<td>$value</td>\n";
- }
- }
- $html .= "\t</tr>\n";
- }
-
- $html .= "</tbody>\n</table>\n";
-
- return $html;
- }
+ protected $tableId;
+ protected $allColumns;
+ protected $tableStructure;
+ protected $i;
+
+ /**
+ * Sets the table id
+ *
+ * @param string $id
+ */
+ function setTableId($id)
+ {
+ $this->tableId = str_replace('.', '_', $id);
+ }
+
+ /**
+ * Output HTTP Content-Type header
+ */
+ protected function renderHeader()
+ {
+ @header('Content-Type: text/html; charset=utf-8');
+ }
+
+ /**
+ * Computes the dataTable output and returns the string/binary
+ *
+ * @return string
+ */
+ function render()
+ {
+ $this->renderHeader();
+ $this->tableStructure = array();
+ $this->allColumns = array();
+ $this->i = 0;
+
+ return $this->renderTable($this->table);
+ }
+
+ /**
+ * Computes the exception output and returns the string/binary
+ *
+ * @return string
+ */
+ function renderException()
+ {
+ $this->renderHeader();
+ $exceptionMessage = $this->getExceptionMessage();
+ return nl2br($exceptionMessage);
+ }
+
+ /**
+ * Computes the output for the given data table
+ *
+ * @param Piwik_DataTable $table
+ * @return string
+ */
+ protected function renderTable($table)
+ {
+ if (is_array($table)) // convert array to DataTable
+ {
+ $table = Piwik_DataTable::makeFromSimpleArray($table);
+ }
+
+ if ($table instanceof Piwik_DataTable_Array) {
+ foreach ($table->getArray() as $date => $subtable) {
+ if ($subtable->getRowsCount()) {
+ $this->buildTableStructure($subtable, '_' . $table->getKeyName(), $date);
+ }
+ }
+ } else // Piwik_DataTable_Simple
+ {
+ if ($table->getRowsCount()) {
+ $this->buildTableStructure($table);
+ }
+ }
+
+ $out = $this->renderDataTable();
+ return $out;
+ }
+
+ /**
+ * Adds the given data table to the table structure array
+ *
+ * @param Piwik_DataTable_Simple $table
+ * @param null|string $columnToAdd
+ * @param null|string $valueToAdd
+ * @throws Exception
+ */
+ protected function buildTableStructure($table, $columnToAdd = null, $valueToAdd = null)
+ {
+ $i = $this->i;
+ $someMetadata = false;
+ $someIdSubTable = false;
+
+ /*
+ * table = array
+ * ROW1 = col1 | col2 | col3 | metadata | idSubTable
+ * ROW2 = col1 | col2 (no value but appears) | col3 | metadata | idSubTable
+ */
+ if (!($table instanceof Piwik_DataTable)) {
+ throw new Exception("HTML Renderer does not work with this combination of parameters");
+ }
+ foreach ($table->getRows() as $row) {
+ if (isset($columnToAdd) && isset($valueToAdd)) {
+ $this->allColumns[$columnToAdd] = true;
+ $this->tableStructure[$i][$columnToAdd] = $valueToAdd;
+ }
+
+ foreach ($row->getColumns() as $column => $value) {
+ $this->allColumns[$column] = true;
+ $this->tableStructure[$i][$column] = $value;
+ }
+
+ $metadata = array();
+ foreach ($row->getMetadata() as $name => $value) {
+ if (is_string($value)) $value = "'$value'";
+ $metadata[] = "'$name' => $value";
+ }
+
+ if (count($metadata) != 0) {
+ $someMetadata = true;
+ $metadata = implode("<br />", $metadata);
+ $this->tableStructure[$i]['_metadata'] = $metadata;
+ }
+
+ $idSubtable = $row->getIdSubDataTable();
+ if (!is_null($idSubtable)) {
+ $someIdSubTable = true;
+ $this->tableStructure[$i]['_idSubtable'] = $idSubtable;
+ }
+
+ $i++;
+ }
+ $this->i = $i;
+
+ $this->allColumns['_metadata'] = $someMetadata;
+ $this->allColumns['_idSubtable'] = $someIdSubTable;
+ }
+
+ /**
+ * Computes the output for the table structure array
+ *
+ * @return string
+ */
+ protected function renderDataTable()
+ {
+ $html = "<table " . ($this->tableId ? "id=\"{$this->tableId}\" " : "") . "border=\"1\">\n<thead>\n\t<tr>\n";
+
+ foreach ($this->allColumns as $name => $toDisplay) {
+ if ($toDisplay !== false) {
+ if ($name === 0) {
+ $name = 'value';
+ }
+ if ($this->translateColumnNames) {
+ $name = $this->translateColumnName($name);
+ }
+ $html .= "\t\t<th>$name</th>\n";
+ }
+ }
+
+ $html .= "\t</tr>\n</thead>\n<tbody>\n";
+
+ foreach ($this->tableStructure as $row) {
+ $html .= "\t<tr>\n";
+ foreach ($this->allColumns as $name => $toDisplay) {
+ if ($toDisplay !== false) {
+ $value = "-";
+ if (isset($row[$name])) {
+ if (is_array($row[$name])) {
+ $value = "<pre>" . self::formatValueXml(var_export($row[$name], true)) . "</pre>";
+ } else {
+ $value = self::formatValueXml($row[$name]);
+ }
+ }
+
+ $html .= "\t\t<td>$value</td>\n";
+ }
+ }
+ $html .= "\t</tr>\n";
+ }
+
+ $html .= "</tbody>\n</table>\n";
+
+ return $html;
+ }
}