Translated using Weblate (English (United Kingdom))
[phpmyadmin.git] / src / Export / TemplateModel.php
blob1b46872ae5980106e1de10b3b2a87da99ae86efb
1 <?php
3 declare(strict_types=1);
5 namespace PhpMyAdmin\Export;
7 use PhpMyAdmin\DatabaseInterface;
8 use PhpMyAdmin\Dbal\ConnectionType;
9 use PhpMyAdmin\Identifiers\DatabaseName;
10 use PhpMyAdmin\Identifiers\TableName;
11 use PhpMyAdmin\Util;
13 use function sprintf;
15 final class TemplateModel
17 public function __construct(private DatabaseInterface $dbi)
21 public function create(DatabaseName $db, TableName $table, Template $template): string
23 $query = sprintf(
24 'INSERT INTO %s.%s (`username`, `export_type`, `template_name`, `template_data`)'
25 . ' VALUES (%s, %s, %s, %s);',
26 Util::backquote($db),
27 Util::backquote($table),
28 $this->dbi->quoteString($template->getUsername(), ConnectionType::ControlUser),
29 $this->dbi->quoteString($template->getExportType(), ConnectionType::ControlUser),
30 $this->dbi->quoteString($template->getName(), ConnectionType::ControlUser),
31 $this->dbi->quoteString($template->getData(), ConnectionType::ControlUser),
33 $result = $this->dbi->tryQueryAsControlUser($query);
34 if ($result !== false) {
35 return '';
38 return $this->dbi->getError(ConnectionType::ControlUser);
41 public function delete(DatabaseName $db, TableName $table, string $user, int $id): string
43 $query = sprintf(
44 'DELETE FROM %s.%s WHERE `id` = %d AND `username` = %s;',
45 Util::backquote($db),
46 Util::backquote($table),
47 $id,
48 $this->dbi->quoteString($user, ConnectionType::ControlUser),
50 $result = $this->dbi->tryQueryAsControlUser($query);
51 if ($result !== false) {
52 return '';
55 return $this->dbi->getError(ConnectionType::ControlUser);
58 public function load(DatabaseName $db, TableName $table, string $user, int $id): Template|string
60 $query = sprintf(
61 'SELECT * FROM %s.%s WHERE `id` = %d AND `username` = %s;',
62 Util::backquote($db),
63 Util::backquote($table),
64 $id,
65 $this->dbi->quoteString($user, ConnectionType::ControlUser),
67 $result = $this->dbi->tryQueryAsControlUser($query);
68 if ($result === false) {
69 return $this->dbi->getError(ConnectionType::ControlUser);
72 $data = [];
73 while ($row = $result->fetchAssoc()) {
74 $data = $row;
77 return Template::fromArray([
78 'id' => (int) $data['id'],
79 'username' => $data['username'],
80 'exportType' => $data['export_type'],
81 'name' => $data['template_name'],
82 'data' => $data['template_data'],
83 ]);
86 public function update(DatabaseName $db, TableName $table, Template $template): string
88 $query = sprintf(
89 'UPDATE %s.%s SET `template_data` = %s WHERE `id` = %d AND `username` = %s;',
90 Util::backquote($db),
91 Util::backquote($table),
92 $this->dbi->quoteString($template->getData(), ConnectionType::ControlUser),
93 $template->getId(),
94 $this->dbi->quoteString($template->getUsername(), ConnectionType::ControlUser),
96 $result = $this->dbi->tryQueryAsControlUser($query);
97 if ($result !== false) {
98 return '';
101 return $this->dbi->getError(ConnectionType::ControlUser);
104 /** @return Template[]|string */
105 public function getAll(DatabaseName $db, TableName $table, string $user, string $exportType): array|string
107 $query = sprintf(
108 'SELECT * FROM %s.%s WHERE `username` = %s AND `export_type` = %s ORDER BY `template_name`;',
109 Util::backquote($db),
110 Util::backquote($table),
111 $this->dbi->quoteString($user, ConnectionType::ControlUser),
112 $this->dbi->quoteString($exportType, ConnectionType::ControlUser),
114 $result = $this->dbi->tryQueryAsControlUser($query);
115 if ($result === false) {
116 return $this->dbi->getError(ConnectionType::ControlUser);
119 $templates = [];
120 while ($row = $result->fetchAssoc()) {
121 $templates[] = Template::fromArray([
122 'id' => (int) $row['id'],
123 'username' => $row['username'],
124 'exportType' => $row['export_type'],
125 'name' => $row['template_name'],
126 'data' => $row['template_data'],
130 return $templates;