PluginProbe
User Access Manager / 2.2.18
User Access Manager v2.2.18
2.3.20 2.3.19 2.3.18 2.3.17 2.3.16 2.3.15 2.3.14 2.3.13 trunk 0.6 0.6.1 0.6.2 0.7 0.7 Beta 0.7.0.1 0.8 0.8.0.1 0.8.0.2 0.9 0.9.1 0.9.1.1 0.9.1.2 0.9.1.3 0.9.1.4 1.0 All 136 releases
user-access-manager / src / Setup / Database / Table.php

Table.php in User Access Manager 2.2.18, at src/Setup/Database/Table.php

112 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Table.php
4 *
5 * The Table class file.
6 *
7 * PHP versions 5
8 *
9 * @author Alexander Schneider <alexanderschneider85@gmail.com>
10 * @copyright 2008-2017 Alexander Schneider
11 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2
12 * @version SVN: $id$
13 * @link http://wordpress.org/extend/plugins/user-access-manager/
14 */
15
16 declare(strict_types=1);
17
18 namespace UserAccessManager\Setup\Database;
19
20 /**
21 * Class Table
22 *
23 * @package UserAccessManager\Setup\Database
24 */
25 class Table
26 {
27 /**
28 * @var string
29 */
30 private $name;
31
32 /**
33 * @var string
34 */
35 private $charsetCollate;
36
37 /**
38 * @var Column[]
39 */
40 private $columns;
41
42 /**
43 * Table constructor.
44 * @param string $name
45 * @param string $charsetCollate
46 * @param array $columns
47 * @throws MissingColumnsException
48 */
49 public function __construct(string $name, string $charsetCollate, array $columns)
50 {
51 $this->name = $name;
52 $this->charsetCollate = $charsetCollate;
53
54 if ($columns === []) {
55 throw new MissingColumnsException('The table needs at least one column.');
56 }
57
58 $this->columns = $columns;
59 }
60
61 /**
62 * @return string
63 */
64 public function getName(): string
65 {
66 return $this->name;
67 }
68
69 /**
70 * @return string
71 */
72 public function getCharsetCollate(): string
73 {
74 return $this->charsetCollate;
75 }
76
77 /**
78 * @return Column[]
79 */
80 public function getColumns(): array
81 {
82 return $this->columns;
83 }
84
85 /**
86 * Returns the table in sql format.
87 * @return string
88 */
89 public function __toString(): string
90 {
91 $columns = implode(', ', $this->columns);
92 $primaryKeys = [];
93
94 foreach ($this->columns as $column) {
95 if ($column->isKey() === true) {
96 $primaryKeys[] = "`{$column->getName()}`";
97 }
98 }
99
100 $primaryKeysQuery = '';
101
102 if ($primaryKeys !== []) {
103 $primaryKeysQuery = implode(', ', $primaryKeys);
104 $primaryKeysQuery = ", PRIMARY KEY ({$primaryKeysQuery})";
105 }
106
107 return "CREATE TABLE `{$this->name}` (
108 {$columns}{$primaryKeysQuery}
109 ) {$this->charsetCollate};";
110 }
111 }
112