renderTable($this->table); } /** * Sets the prefix to be used * * @param string $str new prefix */ public function setPrefixRow(string $str): void { $this->prefixRows = $str; } /** * Computes the output of the given array of data tables * * @param DataTable\Map $map data tables to render * @param string $prefix prefix to output before table data */ protected function renderDataTableMap(DataTable\Map $map, string $prefix): string { $output = "Set
"; $prefix = $prefix . '      '; foreach ($map->getDataTables() as $descTable => $table) { $output .= $prefix . "" . $descTable . "
"; $output .= $prefix . $this->renderTable($table, $prefix . '      '); $output .= "
"; } return $output; } /** * Computes the given dataTable output and returns the string/binary * * @param array|DataTable|DataTable\Map $table data table to render * @param string $prefix prefix to output before table data */ protected function renderTable($table, string $prefix = ''): string { if (is_array($table)) { // convert array to DataTable $table = DataTable::makeFromSimpleArray($table); } if ($table instanceof DataTable\Map) { return $this->renderDataTableMap($table, $prefix); } if ($table->getRowsCount() === 0) { return "Empty table
\n"; } static $depth = 0; $output = ''; $i = 1; foreach ($table->getRows() as $row) { $dataTableMapBreak = false; $columns = array(); foreach ($row->getColumns() as $column => $value) { if ($value instanceof DataTable\Map) { $output .= $this->renderDataTableMap($value, $prefix); $dataTableMapBreak = true; break; } if (is_string($value)) { $value = "'$value'"; } elseif (is_array($value)) { $value = var_export($value, true); } $columns[] = "'$column' => $value"; } if ($dataTableMapBreak === true) { continue; } $columns = implode(", ", $columns); if ($this->hideMetadata) { $output .= str_repeat($this->prefixRows, $depth) . "- $i [" . $columns . "]
\n"; } else { $metadata = []; foreach ($row->getMetadata() as $name => $value) { if (is_string($value)) { $value = "'$value'"; } elseif (is_array($value)) { $value = var_export($value, true); } $metadata[] = "'$name' => $value"; } $metadata = implode(", ", $metadata); $output .= str_repeat($this->prefixRows, $depth) . "- $i [" . $columns . "] [" . $metadata . "] [idsubtable = " . $row->getIdSubDataTable() . "]
\n"; } if (!is_null($row->getIdSubDataTable())) { $subTable = $row->getSubtable(); if ($subTable) { $depth++; $output .= $this->renderTable($subTable, $prefix . '      '); $depth--; } else { $output .= "-- Sub DataTable not loaded
\n"; } } $i++; } if (!$this->hideMetadata) { $metadata = $table->getAllTableMetadata(); if (!empty($metadata)) { $output .= "
Metadata
"; foreach ($metadata as $id => $metadataIn) { $output .= "
"; $output .= $prefix . " $id
"; if (is_array($metadataIn)) { foreach ($metadataIn as $name => $value) { if (is_object($value) && !method_exists($value, '__toString')) { $value = 'Object [' . get_class($value) . ']'; } elseif (is_array($value)) { $value = 'Array ' . json_encode($value); } if (is_array($value)) { $value = json_encode($value); } $output .= $prefix . $prefix . "$name => $value"; } } } } } return $output; } }