PluginProbe
User Access Manager / 2.1.6
User Access Manager v2.1.6
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.1.6, at src/Setup/Database/Table.php

114 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 namespace UserAccessManager\Setup\Database;
16
17 /**
18 * Class Table
19 *
20 * @package UserAccessManager\Setup\Database
21 */
22 class Table
23 {
24 /**
25 * @var string
26 */
27 private $name;
28
29 /**
30 * @var string
31 */
32 private $charsetCollate;
33
34 /**
35 * @var Column[]
36 */
37 private $columns;
38
39 /**
40 * Table constructor.
41 *
42 * @param string $name
43 * @param string $charsetCollate
44 * @param array $columns
45 *
46 * @throws MissingColumnsException
47 */
48 public function __construct($name, $charsetCollate, array $columns)
49 {
50 $this->name = $name;
51 $this->charsetCollate = $charsetCollate;
52
53 if ($columns === []) {
54 throw new MissingColumnsException('The table needs at least one column.');
55 }
56
57 $this->columns = $columns;
58 }
59
60 /**
61 * @return string
62 */
63 public function getName()
64 {
65 return $this->name;
66 }
67
68 /**
69 * @return string
70 */
71 public function getCharsetCollate()
72 {
73 return $this->charsetCollate;
74 }
75
76 /**
77 * @return Column[]
78 */
79 public function getColumns()
80 {
81 return $this->columns;
82 }
83
84 /**
85 * Returns the table in sql format.
86 *
87 * @return string
88 */
89 public function __toString()
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 $table = "CREATE TABLE `{$this->name}` (
108 {$columns}{$primaryKeysQuery}
109 ) {$this->charsetCollate};";
110
111 return $table;
112 }
113 }
114