aboutsummaryrefslogtreecommitdiff
path: root/srcs/phpmyadmin/libraries/classes/Plugins/Schema/Svg/TableStatsSvg.php
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-01-09 10:55:03 +0100
committerCharles <sircharlesaze@gmail.com>2020-01-09 13:09:38 +0100
commit04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch)
tree5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/libraries/classes/Plugins/Schema/Svg/TableStatsSvg.php
parent7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff)
downloadft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/libraries/classes/Plugins/Schema/Svg/TableStatsSvg.php')
-rw-r--r--srcs/phpmyadmin/libraries/classes/Plugins/Schema/Svg/TableStatsSvg.php204
1 files changed, 204 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/libraries/classes/Plugins/Schema/Svg/TableStatsSvg.php b/srcs/phpmyadmin/libraries/classes/Plugins/Schema/Svg/TableStatsSvg.php
new file mode 100644
index 0000000..13b1a82
--- /dev/null
+++ b/srcs/phpmyadmin/libraries/classes/Plugins/Schema/Svg/TableStatsSvg.php
@@ -0,0 +1,204 @@
+<?php
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ * Contains PhpMyAdmin\Plugins\Schema\Svg\TableStatsSvg class
+ *
+ * @package PhpMyAdmin
+ */
+declare(strict_types=1);
+
+namespace PhpMyAdmin\Plugins\Schema\Svg;
+
+use PhpMyAdmin\Font;
+use PhpMyAdmin\Plugins\Schema\ExportRelationSchema;
+use PhpMyAdmin\Plugins\Schema\TableStats;
+
+/**
+ * Table preferences/statistics
+ *
+ * This class preserves the table co-ordinates,fields
+ * and helps in drawing/generating the Tables in SVG XML document.
+ *
+ * @package PhpMyAdmin
+ * @name Table_Stats_Svg
+ * @see PMA_SVG
+ */
+class TableStatsSvg extends TableStats
+{
+ /**
+ * Defines properties
+ */
+ public $height;
+ public $currentCell = 0;
+
+ /**
+ * The "PhpMyAdmin\Plugins\Schema\Svg\TableStatsSvg" constructor
+ *
+ * @param object $diagram The current SVG image document
+ * @param string $db The database name
+ * @param string $tableName The table name
+ * @param string $font Font face
+ * @param integer $fontSize The font size
+ * @param integer $pageNumber Page number
+ * @param integer $same_wide_width The max. width among tables
+ * @param boolean $showKeys Whether to display keys or not
+ * @param boolean $tableDimension Whether to display table position or not
+ * @param boolean $offline Whether the coordinates are sent
+ *
+ *
+ * @see PMA_SVG, Table_Stats_Svg::Table_Stats_setWidth,
+ * PhpMyAdmin\Plugins\Schema\Svg\TableStatsSvg::Table_Stats_setHeight
+ */
+ public function __construct(
+ $diagram,
+ $db,
+ $tableName,
+ $font,
+ $fontSize,
+ $pageNumber,
+ &$same_wide_width,
+ $showKeys = false,
+ $tableDimension = false,
+ $offline = false
+ ) {
+ parent::__construct(
+ $diagram,
+ $db,
+ $pageNumber,
+ $tableName,
+ $showKeys,
+ $tableDimension,
+ $offline
+ );
+
+ // height and width
+ $this->_setHeightTable($fontSize);
+ // setWidth must me after setHeight, because title
+ // can include table height which changes table width
+ $this->_setWidthTable($font, $fontSize);
+ if ($same_wide_width < $this->width) {
+ $same_wide_width = $this->width;
+ }
+ }
+
+ /**
+ * Displays an error when the table cannot be found.
+ *
+ * @return void
+ */
+ protected function showMissingTableError()
+ {
+ ExportRelationSchema::dieSchema(
+ $this->pageNumber,
+ "SVG",
+ sprintf(__('The %s table doesn\'t exist!'), $this->tableName)
+ );
+ }
+
+ /**
+ * Sets the width of the table
+ *
+ * @param string $font The font size
+ * @param integer $fontSize The font size
+ *
+ * @return void
+ * @access private
+ *
+ * @see PMA_SVG
+ */
+ private function _setWidthTable($font, $fontSize)
+ {
+ foreach ($this->fields as $field) {
+ $this->width = max(
+ $this->width,
+ $this->font->getStringWidth($field, $font, $fontSize)
+ );
+ }
+ $this->width += $this->font->getStringWidth(' ', $font, $fontSize);
+
+ /*
+ * it is unknown what value must be added, because
+ * table title is affected by the table width value
+ */
+ while ($this->width
+ < $this->font->getStringWidth($this->getTitle(), $font, $fontSize)
+ ) {
+ $this->width += 7;
+ }
+ }
+
+ /**
+ * Sets the height of the table
+ *
+ * @param integer $fontSize font size
+ *
+ * @return void
+ */
+ private function _setHeightTable($fontSize)
+ {
+ $this->heightCell = $fontSize + 4;
+ $this->height = (count($this->fields) + 1) * $this->heightCell;
+ }
+
+ /**
+ * draw the table
+ *
+ * @param boolean $showColor Whether to display color
+ *
+ * @access public
+ * @return void
+ *
+ * @see PMA_SVG,PMA_SVG::printElement
+ */
+ public function tableDraw($showColor)
+ {
+ $this->diagram->printElement(
+ 'rect',
+ $this->x,
+ $this->y,
+ $this->width,
+ $this->heightCell,
+ null,
+ 'fill:#007;stroke:black;'
+ );
+ $this->diagram->printElement(
+ 'text',
+ $this->x + 5,
+ $this->y + 14,
+ $this->width,
+ $this->heightCell,
+ $this->getTitle(),
+ 'fill:#fff;'
+ );
+ foreach ($this->fields as $field) {
+ $this->currentCell += $this->heightCell;
+ $fillColor = 'none';
+ if ($showColor) {
+ if (in_array($field, $this->primary)) {
+ $fillColor = '#aea';
+ }
+ if ($field == $this->displayfield) {
+ $fillColor = 'none';
+ }
+ }
+ $this->diagram->printElement(
+ 'rect',
+ $this->x,
+ $this->y + $this->currentCell,
+ $this->width,
+ $this->heightCell,
+ null,
+ 'fill:' . $fillColor . ';stroke:black;'
+ );
+ $this->diagram->printElement(
+ 'text',
+ $this->x + 5,
+ $this->y + 14 + $this->currentCell,
+ $this->width,
+ $this->heightCell,
+ $field,
+ 'fill:black;'
+ );
+ }
+ }
+}