Chris@0: headers = $fieldLabels; Chris@0: $this->rowLabels = $rowLabels; Chris@0: $rows = static::transformRows($data, $fieldLabels); Chris@0: $this->layout = self::TABLE_LAYOUT; Chris@0: parent::__construct($rows); Chris@0: } Chris@0: Chris@0: public function setLayout($layout) Chris@0: { Chris@0: $this->layout = $layout; Chris@0: } Chris@0: Chris@0: public function getLayout() Chris@0: { Chris@0: return $this->layout; Chris@0: } Chris@0: Chris@0: public function isList() Chris@0: { Chris@0: return $this->layout == self::LIST_LAYOUT; Chris@0: } Chris@0: Chris@17: /** Chris@17: * @inheritdoc Chris@17: */ Chris@17: public function simplifyToString(FormatterOptions $options) Chris@17: { Chris@17: $alternateFormatter = new TsvFormatter(); Chris@17: $output = new BufferedOutput(); Chris@17: Chris@17: try { Chris@17: $data = $alternateFormatter->validate($this->getArrayCopy()); Chris@17: $alternateFormatter->write($output, $this->getArrayCopy(), $options); Chris@17: } catch (\Exception $e) { Chris@17: } Chris@17: return $output->fetch(); Chris@17: } Chris@17: Chris@0: protected static function transformRows($data, $fieldLabels) Chris@0: { Chris@0: $rows = []; Chris@0: foreach ($data as $rowid => $row) { Chris@0: $rows[$rowid] = static::transformRow($row, $fieldLabels); Chris@0: } Chris@0: return $rows; Chris@0: } Chris@0: Chris@0: protected static function transformRow($row, $fieldLabels) Chris@0: { Chris@0: $result = []; Chris@0: foreach ($fieldLabels as $key => $label) { Chris@0: $result[$key] = array_key_exists($key, $row) ? $row[$key] : ''; Chris@0: } Chris@0: return $result; Chris@0: } Chris@0: Chris@0: public function getHeaders() Chris@0: { Chris@0: return $this->headers; Chris@0: } Chris@0: Chris@0: public function getHeader($key) Chris@0: { Chris@0: if (array_key_exists($key, $this->headers)) { Chris@0: return $this->headers[$key]; Chris@0: } Chris@0: return $key; Chris@0: } Chris@0: Chris@0: public function getRowLabels() Chris@0: { Chris@0: return $this->rowLabels; Chris@0: } Chris@0: Chris@0: public function getRowLabel($rowid) Chris@0: { Chris@0: if (array_key_exists($rowid, $this->rowLabels)) { Chris@0: return $this->rowLabels[$rowid]; Chris@0: } Chris@0: return $rowid; Chris@0: } Chris@0: Chris@0: public function getOriginalData() Chris@0: { Chris@13: if (isset($this->originalData)) { Chris@13: return $this->originalData->reconstruct($this->getArrayCopy(), $this->originalData->getMetadata()); Chris@13: } Chris@0: return $this->getArrayCopy(); Chris@0: } Chris@0: Chris@13: public function setOriginalData(MetadataHolderInterface $data) Chris@13: { Chris@13: $this->originalData = $data; Chris@13: } Chris@13: Chris@0: public function getTableData($includeRowKey = false) Chris@0: { Chris@0: $data = $this->getArrayCopy(); Chris@0: if ($this->isList()) { Chris@0: $data = $this->convertTableToList(); Chris@0: } Chris@0: if ($includeRowKey) { Chris@0: $data = $this->getRowDataWithKey($data); Chris@0: } Chris@0: return $data; Chris@0: } Chris@0: Chris@0: protected function convertTableToList() Chris@0: { Chris@0: $result = []; Chris@0: foreach ($this as $row) { Chris@0: foreach ($row as $key => $value) { Chris@0: $result[$key][] = $value; Chris@0: } Chris@0: } Chris@0: return $result; Chris@0: } Chris@0: Chris@0: protected function getRowDataWithKey($data) Chris@0: { Chris@0: $result = []; Chris@0: $i = 0; Chris@0: foreach ($data as $key => $row) { Chris@0: array_unshift($row, $this->getHeader($key)); Chris@0: $i++; Chris@0: $result[$key] = $row; Chris@0: } Chris@0: return $result; Chris@0: } Chris@0: }