heightCell = 6; $this->setHeight(); /* * setWidth must me after setHeight, because title * can include table height which changes table width */ $this->setWidth($fontSize); if ($sameWideWidth >= $this->width) { return; } $sameWideWidth = $this->width; } /** * Displays an error when the table cannot be found. */ protected function showMissingTableError(): void { ExportRelationSchema::dieSchema( $this->pageNumber, 'PDF', sprintf(__('The %s table doesn\'t exist!'), $this->tableName) ); } /** * Returns title of the current table, * title can have the dimensions of the table * * @return string */ protected function getTitle() { $ret = ''; if ($this->tableDimension) { $ret = sprintf('%.0fx%0.f', $this->width, $this->height); } return $ret . ' ' . $this->tableName; } /** * Sets the width of the table * * @see PMA_Schema_PDF * * @param int $fontSize The font size */ private function setWidth($fontSize): void { foreach ($this->fields as $field) { $this->width = max($this->width, $this->diagram->GetStringWidth($field)); } $this->width += $this->diagram->GetStringWidth(' '); $this->diagram->SetFont($this->ff, 'B', $fontSize); /* * it is unknown what value must be added, because * table title is affected by the table width value */ while ($this->width < $this->diagram->GetStringWidth($this->getTitle())) { $this->width += 5; } $this->diagram->SetFont($this->ff, '', $fontSize); } /** * Sets the height of the table */ private function setHeight(): void { $this->height = (count($this->fields) + 1) * $this->heightCell; } /** * Do draw the table * * @see Schema\Pdf * * @param int|null $fontSize The font size or null to use the default value * @param bool $withDoc Whether to include links to documentation * @param bool $setColor Whether to display color */ public function tableDraw(?int $fontSize, bool $withDoc, bool $setColor = false): void { $this->diagram->setXyScale($this->x, $this->y); $this->diagram->SetFont($this->ff, 'B', $fontSize); if ($setColor) { $this->diagram->SetTextColor(200); $this->diagram->SetFillColor(0, 0, 128); } if ($withDoc) { $this->diagram->SetLink($this->diagram->customLinks['RT'][$this->tableName]['-'], -1); } else { $this->diagram->customLinks['doc'][$this->tableName]['-'] = ''; } $this->diagram->cellScale( $this->width, $this->heightCell, $this->getTitle(), 1, 1, 'C', $setColor, $this->diagram->customLinks['doc'][$this->tableName]['-'] ); $this->diagram->setXScale($this->x); $this->diagram->SetFont($this->ff, '', $fontSize); $this->diagram->SetTextColor(0); $this->diagram->SetFillColor(255); foreach ($this->fields as $field) { if ($setColor) { if (in_array($field, $this->primary)) { $this->diagram->SetFillColor(215, 121, 123); } if ($field == $this->displayfield) { $this->diagram->SetFillColor(142, 159, 224); } } if ($withDoc) { $this->diagram->SetLink($this->diagram->customLinks['RT'][$this->tableName][$field], -1); } else { $this->diagram->customLinks['doc'][$this->tableName][$field] = ''; } $this->diagram->cellScale( $this->width, $this->heightCell, ' ' . $field, 1, 1, 'L', $setColor, $this->diagram->customLinks['doc'][$this->tableName][$field] ); $this->diagram->setXScale($this->x); $this->diagram->SetFillColor(255); } } }