aboutsummaryrefslogtreecommitdiff
path: root/srcs/phpmyadmin/libraries/classes/Plugins/Export/Helpers/TableProperty.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/Export/Helpers/TableProperty.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/Export/Helpers/TableProperty.php')
-rw-r--r--srcs/phpmyadmin/libraries/classes/Plugins/Export/Helpers/TableProperty.php277
1 files changed, 277 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/libraries/classes/Plugins/Export/Helpers/TableProperty.php b/srcs/phpmyadmin/libraries/classes/Plugins/Export/Helpers/TableProperty.php
new file mode 100644
index 0000000..8991251
--- /dev/null
+++ b/srcs/phpmyadmin/libraries/classes/Plugins/Export/Helpers/TableProperty.php
@@ -0,0 +1,277 @@
+<?php
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ * Holds the PhpMyAdmin\Plugins\Export\Helpers\TableProperty class
+ *
+ * @package PhpMyAdmin-Export
+ * @subpackage CodeGen
+ */
+declare(strict_types=1);
+
+namespace PhpMyAdmin\Plugins\Export\Helpers;
+
+use PhpMyAdmin\Plugins\Export\ExportCodegen;
+
+/**
+ * PhpMyAdmin\Plugins\Export\Helpers\TableProperty class
+ *
+ * @package PhpMyAdmin-Export
+ * @subpackage CodeGen
+ */
+class TableProperty
+{
+ /**
+ * Name
+ *
+ * @var string
+ */
+ public $name;
+
+ /**
+ * Type
+ *
+ * @var string
+ */
+ public $type;
+
+ /**
+ * Whether the key is nullable or not
+ *
+ * @var string
+ */
+ public $nullable;
+
+ /**
+ * The key
+ *
+ * @var string
+ */
+ public $key;
+
+ /**
+ * Default value
+ *
+ * @var mixed
+ */
+ public $defaultValue;
+
+ /**
+ * Extension
+ *
+ * @var string
+ */
+ public $ext;
+
+ /**
+ * Constructor
+ *
+ * @param array $row table row
+ */
+ public function __construct(array $row)
+ {
+ $this->name = trim((string) $row[0]);
+ $this->type = trim((string) $row[1]);
+ $this->nullable = trim((string) $row[2]);
+ $this->key = trim((string) $row[3]);
+ $this->defaultValue = trim((string) $row[4]);
+ $this->ext = trim((string) $row[5]);
+ }
+
+ /**
+ * Gets the pure type
+ *
+ * @return string type
+ */
+ public function getPureType()
+ {
+ $pos = mb_strpos($this->type, "(");
+ if ($pos > 0) {
+ return mb_substr($this->type, 0, $pos);
+ }
+ return $this->type;
+ }
+
+ /**
+ * Tells whether the key is null or not
+ *
+ * @return string true if the key is not null, false otherwise
+ */
+ public function isNotNull()
+ {
+ return $this->nullable === "NO" ? "true" : "false";
+ }
+
+ /**
+ * Tells whether the key is unique or not
+ *
+ * @return string "true" if the key is unique, "false" otherwise
+ */
+ public function isUnique(): string
+ {
+ return ($this->key === "PRI" || $this->key === "UNI") ? "true" : "false";
+ }
+
+ /**
+ * Gets the .NET primitive type
+ *
+ * @return string type
+ */
+ public function getDotNetPrimitiveType()
+ {
+ if (mb_strpos($this->type, "int") === 0) {
+ return "int";
+ }
+ if (mb_strpos($this->type, "longtext") === 0) {
+ return "string";
+ }
+ if (mb_strpos($this->type, "long") === 0) {
+ return "long";
+ }
+ if (mb_strpos($this->type, "char") === 0) {
+ return "string";
+ }
+ if (mb_strpos($this->type, "varchar") === 0) {
+ return "string";
+ }
+ if (mb_strpos($this->type, "text") === 0) {
+ return "string";
+ }
+ if (mb_strpos($this->type, "tinyint") === 0) {
+ return "bool";
+ }
+ if (mb_strpos($this->type, "datetime") === 0) {
+ return "DateTime";
+ }
+ return "unknown";
+ }
+
+ /**
+ * Gets the .NET object type
+ *
+ * @return string type
+ */
+ public function getDotNetObjectType()
+ {
+ if (mb_strpos($this->type, "int") === 0) {
+ return "Int32";
+ }
+ if (mb_strpos($this->type, "longtext") === 0) {
+ return "String";
+ }
+ if (mb_strpos($this->type, "long") === 0) {
+ return "Long";
+ }
+ if (mb_strpos($this->type, "char") === 0) {
+ return "String";
+ }
+ if (mb_strpos($this->type, "varchar") === 0) {
+ return "String";
+ }
+ if (mb_strpos($this->type, "text") === 0) {
+ return "String";
+ }
+ if (mb_strpos($this->type, "tinyint") === 0) {
+ return "Boolean";
+ }
+ if (mb_strpos($this->type, "datetime") === 0) {
+ return "DateTime";
+ }
+ return "Unknown";
+ }
+
+ /**
+ * Gets the index name
+ *
+ * @return string containing the name of the index
+ */
+ public function getIndexName()
+ {
+ if (strlen($this->key) > 0) {
+ return "index=\""
+ . htmlspecialchars($this->name, ENT_COMPAT, 'UTF-8')
+ . "\"";
+ }
+ return "";
+ }
+
+ /**
+ * Tells whether the key is primary or not
+ *
+ * @return bool true if the key is primary, false otherwise
+ */
+ public function isPK(): bool
+ {
+ return $this->key === "PRI";
+ }
+
+ /**
+ * Formats a string for C#
+ *
+ * @param string $text string to be formatted
+ *
+ * @return string formatted text
+ */
+ public function formatCs($text)
+ {
+ $text = str_replace(
+ '#name#',
+ ExportCodegen::cgMakeIdentifier($this->name, false),
+ $text
+ );
+ return $this->format($text);
+ }
+
+ /**
+ * Formats a string for XML
+ *
+ * @param string $text string to be formatted
+ *
+ * @return string formatted text
+ */
+ public function formatXml($text)
+ {
+ $text = str_replace(
+ [
+ '#name#',
+ '#indexName#',
+ ],
+ [
+ htmlspecialchars($this->name, ENT_COMPAT, 'UTF-8'),
+ $this->getIndexName(),
+ ],
+ $text
+ );
+ return $this->format($text);
+ }
+
+ /**
+ * Formats a string
+ *
+ * @param string $text string to be formatted
+ *
+ * @return string formatted text
+ */
+ public function format($text)
+ {
+ $text = str_replace(
+ [
+ '#ucfirstName#',
+ '#dotNetPrimitiveType#',
+ '#dotNetObjectType#',
+ '#type#',
+ '#notNull#',
+ '#unique#',
+ ],
+ [
+ ExportCodegen::cgMakeIdentifier($this->name),
+ $this->getDotNetPrimitiveType(),
+ $this->getDotNetObjectType(),
+ $this->getPureType(),
+ $this->isNotNull(),
+ $this->isUnique(),
+ ],
+ $text
+ );
+ return $text;
+ }
+}