PluginProbe
E2Pdf – Export Pdf Tool for WordPress / 1.32.43
E2Pdf – Export Pdf Tool for WordPress v1.32.43
1.32.49 1.32.48 1.32.43 1.32.40 1.32.34 1.32.32 1.32.31 1.32.26 1.32.22 1.32.23 1.32.18 1.32.17 1.32.15 trunk 1.00.00 1.00.13 1.01.01 1.02.02 1.03.07 1.04.07 1.05.03 1.06.02 1.07.11 1.08.00 1.08.06 All 72 releases
e2pdf / classes / helper / e2pdf-db.php

e2pdf-db.php in E2Pdf – Export Pdf Tool for WordPress 1.32.43, at classes/helper/e2pdf-db.php

947 lines 43.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * E2pdf Get Helper
5 *
6 * @copyright Copyright 2017 https://e2pdf.com
7 * @license GPLv3
8 * @version 1
9 * @link https://e2pdf.com
10 * @since 0.00.01
11 */
12 if (!defined('ABSPATH')) {
13 die('Access denied.');
14 }
15
16 class Helper_E2pdf_Db {
17
18 /**
19 * Prepare WHERE for sql requests
20 * @param string $condition - Array of conditions
21 * @return array - Filtered WHERE request
22 */
23 public function prepare_where($condition = array(), $sub_query = false) {
24
25 $sql = array();
26 $filter = array();
27 if (!$sub_query) {
28 $sql[] = " WHERE 1 = 1";
29 }
30 $condition = apply_filters('e2pdf_helper_db_prepare_where_condition', $condition);
31
32 if (!empty($condition)) {
33 foreach ($condition as $key => $value) {
34
35 $sql_keys = explode('.', $key);
36 foreach ($sql_keys as $sql_sub_key => $sql_key) {
37 $sql_keys[$sql_sub_key] = '`' . $sql_key . '`';
38 }
39
40 if (is_array($value['value'])) {
41 foreach ($value['value'] as $sub_value) {
42 $sql[] = " " . implode('.', $sql_keys) . " {$value['condition']} '{$value['type']}'";
43 $filter[] = $sub_value;
44 }
45 } else {
46 if (!empty($value['or'])) {
47 $sub_sql = array();
48 $sub_sql[] = " " . implode('.', $sql_keys) . " {$value['condition']} '{$value['type']}'";
49 $filter[] = $value['value'];
50 foreach ($value['or'] as $or) {
51 $sub_where = $this->prepare_where($or, true);
52 $sub_sql[] = $sub_where['sql'];
53 foreach ($sub_where['filter'] as $sub_filter) {
54 $filter[] = $sub_filter;
55 }
56 }
57
58 $sql[] = ' (' . implode(' OR ', $sub_sql) . ')';
59 } else {
60 $sql[] = " " . implode('.', $sql_keys) . " {$value['condition']} '{$value['type']}'";
61 $filter[] = $value['value'];
62 }
63 }
64 }
65 }
66
67 $where = array(
68 'sql' => implode(' AND', $sql),
69 'filter' => $filter,
70 );
71
72 return apply_filters('e2pdf_helper_db_prepare_where', $where, $condition);
73 }
74
75 /**
76 * Prepare ORDER_BY for sql requests
77 * @param string $condition - Array of conditions
78 * @return array - Filtered ORDER_BY request
79 */
80 public function prepare_orderby($condition = array()) {
81
82 $orderby = '';
83 $condition = apply_filters('e2pdf_helper_db_prepare_orderby_condition', $condition);
84
85 if (isset($condition['orderby']) && isset($condition['order'])) {
86 $orderby .= " ORDER BY {$condition['orderby']} {$condition['order']}";
87 }
88
89 return apply_filters('e2pdf_helper_db_prepare_orderby', $orderby, $condition);
90 }
91
92 public function prepare_limit($condition = array()) {
93
94 $limit = '';
95 $condition = apply_filters('e2pdf_helper_db_prepare_limit_condition', $condition);
96
97 if (isset($condition['limit']) && isset($condition['offset'])) {
98 $limit .= " LIMIT {$condition['offset']}, {$condition['limit']}";
99 }
100
101 return apply_filters('e2pdf_helper_db_prepare_limit', $limit, $condition);
102 }
103
104 public function db_init($db_prefix, $maybe_row_format = true) {
105 global $wpdb;
106
107 $collate = $this->db_collate();
108 if ($this->db_test_row_format($db_prefix)) {
109 $collate .= ' ROW_FORMAT=DYNAMIC';
110 }
111
112 $srpk = $wpdb->get_row("SHOW VARIABLES LIKE 'sql_require_primary_key'", ARRAY_A);
113 if ($srpk && isset($srpk['Value']) && $srpk['Value'] == 'ON') {
114 $wpdb->query('SET SESSION sql_require_primary_key = 0;');
115 }
116
117 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_templates` (
118 `ID` int(11) NOT NULL AUTO_INCREMENT,
119 `uid` varchar(255) NOT NULL,
120 `pdf` text,
121 `title` text,
122 `created_at` datetime NOT NULL,
123 `updated_at` datetime NOT NULL,
124 `flatten` enum('0','1','2') NOT NULL DEFAULT '0',
125 `tab_order` enum('0','1','2','3','4') NOT NULL DEFAULT '0',
126 `compression` int(1) NOT NULL DEFAULT '-1',
127 `optimization` int(1) NOT NULL DEFAULT '-1',
128 `appearance` enum('0','1') NOT NULL DEFAULT '0',
129 `width` int(11) NOT NULL DEFAULT '0',
130 `height` int(11) NOT NULL DEFAULT '0',
131 `extension` varchar(255) NOT NULL,
132 `item` varchar(255) NOT NULL,
133 `item1` varchar(255) NOT NULL,
134 `item2` varchar(255) NOT NULL,
135 `format` varchar(255) NOT NULL DEFAULT 'pdf',
136 `resample` varchar(255) NOT NULL DEFAULT '100',
137 `dataset_title` text NOT NULL,
138 `dataset_title1` text NOT NULL,
139 `dataset_title2` text NOT NULL,
140 `button_title` text NOT NULL,
141 `dpdf` text NOT NULL,
142 `inline` enum('0','1') NOT NULL DEFAULT '0',
143 `auto` enum('0','1') NOT NULL DEFAULT '0',
144 `rtl` enum('0','1') NOT NULL DEFAULT '0',
145 `font_processor` enum('0','1') NOT NULL DEFAULT '0',
146 `name` text NOT NULL,
147 `savename` text NOT NULL,
148 `password` text NOT NULL,
149 `owner_password` text NOT NULL,
150 `permissions` longtext NOT NULL,
151 `hooks` longtext NOT NULL,
152 `meta_title` text NOT NULL,
153 `meta_subject` text NOT NULL,
154 `meta_author` text NOT NULL,
155 `meta_keywords` text NOT NULL,
156 `lang_code` varchar(255) NOT NULL,
157 `font` varchar(255) NOT NULL,
158 `font_size` varchar(255) NOT NULL,
159 `font_color` varchar(255) NOT NULL,
160 `line_height` varchar(255) NOT NULL,
161 `text_align` varchar(255) NOT NULL,
162 `fonts` longtext NOT NULL,
163 `attachments` longtext NOT NULL,
164 `trash` enum('0','1') NOT NULL DEFAULT '0',
165 `activated` enum('0','1') NOT NULL DEFAULT '0',
166 `locked` enum('0','1') NOT NULL DEFAULT '0',
167 `author` int(11) NOT NULL,
168 `properties` longtext NOT NULL,
169 `actions` longtext NOT NULL,
170 PRIMARY KEY (`ID`)
171 ) " . $collate . "");
172
173 if ($wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'blank';")) {
174 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` DROP COLUMN `blank`;");
175 }
176
177 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'meta_title';")) {
178 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `meta_title` text NOT NULL AFTER password;");
179 }
180
181 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'meta_subject';")) {
182 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `meta_subject` text NOT NULL AFTER meta_title;");
183 }
184
185 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'meta_author';")) {
186 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `meta_author` text NOT NULL AFTER meta_subject;");
187 }
188
189 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'meta_keywords';")) {
190 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `meta_keywords` text NOT NULL AFTER meta_author;");
191 }
192
193 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'lang_code';")) {
194 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `lang_code` varchar(255) NOT NULL AFTER meta_keywords;");
195 }
196
197 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'actions';")) {
198 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `actions` longtext NOT NULL AFTER author;");
199 }
200
201 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'properties';")) {
202 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `properties` longtext NOT NULL AFTER author;");
203 }
204
205 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'rtl';")) {
206 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `rtl` enum('0','1') NOT NULL DEFAULT '0' AFTER auto;");
207 }
208
209 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'font_processor';")) {
210 if (get_option('e2pdf_font_processor', '0') == '1') {
211 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `font_processor` enum('0','1') NOT NULL DEFAULT '1' AFTER rtl;");
212 } else {
213 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `font_processor` enum('0','1') NOT NULL DEFAULT '0' AFTER rtl;");
214 }
215 }
216
217 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'text_align';")) {
218 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `text_align` varchar(255) NOT NULL AFTER line_height;");
219 }
220
221 $tab_order = $wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'tab_order';", 1);
222 if ($tab_order === null) {
223 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `tab_order` enum('0','1','2','3','4') NOT NULL DEFAULT '0' AFTER flatten;");
224 } elseif (strpos($tab_order, "'4'") === false) {
225 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` MODIFY COLUMN `tab_order` enum('0','1','2','3','4') NOT NULL DEFAULT '0';");
226 }
227
228 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'item1';")) {
229 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `item1` varchar(255) NOT NULL AFTER item;");
230 }
231
232 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'item2';")) {
233 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `item2` varchar(255) NOT NULL AFTER item1;");
234 }
235
236 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'dataset_title1';")) {
237 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `dataset_title1` text NOT NULL AFTER dataset_title;");
238 }
239
240 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'dataset_title2';")) {
241 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `dataset_title2` text NOT NULL AFTER dataset_title1;");
242 }
243
244 if ($wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` WHERE Field = 'format' and Type LIKE '%enum%';")) {
245 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` DROP COLUMN `format`;");
246 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `format` varchar(255) NOT NULL DEFAULT 'pdf' AFTER item2;");
247 }
248
249 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'resample';")) {
250 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `resample` varchar(255) NOT NULL DEFAULT '100' AFTER format;");
251 }
252
253 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'owner_password';")) {
254 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `owner_password` text NOT NULL AFTER password;");
255 }
256
257 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'permissions';")) {
258 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `permissions` longtext NOT NULL AFTER owner_password;");
259 }
260
261 $wpdb->query("UPDATE `" . $db_prefix . "e2pdf_templates` SET permissions = 'a:1:{i:0;s:8:\"printing\";}' WHERE permissions = ''");
262
263 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'hooks';")) {
264 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `hooks` longtext NOT NULL AFTER permissions;");
265 }
266
267 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'dpdf';")) {
268 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `dpdf` text NOT NULL AFTER button_title;");
269 }
270
271 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'savename';")) {
272 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `savename` text NOT NULL AFTER name;");
273 }
274
275 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'optimization';")) {
276 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `optimization` int(1) NOT NULL DEFAULT '-1' AFTER compression;");
277 }
278
279 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'attachments';")) {
280 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `attachments` longtext NOT NULL AFTER fonts;");
281 }
282
283 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_entries` (
284 `ID` bigint(20) NOT NULL AUTO_INCREMENT,
285 `uid` varchar(255) NOT NULL,
286 `entry` longtext,
287 `pdf_num` int(11) NOT NULL DEFAULT '0',
288 PRIMARY KEY (`ID`)
289 ) " . $collate . "");
290
291 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_entries` LIKE 'pdf_num';")) {
292 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_entries` ADD COLUMN `pdf_num` int(11) NOT NULL DEFAULT '0';");
293 }
294
295 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_entries` WHERE key_name = 'uid';");
296 if (is_null($index)) {
297 $wpdb->query("CREATE INDEX `uid` ON `" . $db_prefix . "e2pdf_entries` (`uid`);");
298 }
299
300 if ($wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_entries` WHERE Field = 'ID' and Type LIKE 'int(11)';")) {
301 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_entries` CHANGE `ID` `ID` bigint(20) NOT NULL AUTO_INCREMENT;");
302 }
303
304 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_datasets` (
305 `ID` bigint(20) NOT NULL AUTO_INCREMENT,
306 `extension` varchar(255) NOT NULL,
307 `item` varchar(255) NOT NULL,
308 `entry` longtext,
309 `created_at` datetime NOT NULL,
310 PRIMARY KEY (`ID`)
311 ) " . $collate . "");
312
313 if ($wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_datasets` WHERE Field = 'ID' and Type LIKE 'int(11)';")) {
314 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_datasets` CHANGE `ID` `ID` bigint(20) NOT NULL AUTO_INCREMENT;");
315 }
316
317 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_datasets` LIKE 'created_at';")) {
318 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_datasets` ADD COLUMN `created_at` datetime NOT NULL AFTER entry;");
319 }
320
321 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_pages` (
322 `PID` bigint(20) NOT NULL AUTO_INCREMENT,
323 `page_id` int(11) NOT NULL DEFAULT '0',
324 `template_id` int(11) NOT NULL DEFAULT '0',
325 `properties` longtext NOT NULL,
326 `actions` longtext NOT NULL,
327 `revision_id` int(11) NOT NULL DEFAULT '0',
328 PRIMARY KEY (`PID`)
329 ) " . $collate . "");
330
331 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_pages` LIKE 'actions';")) {
332 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_pages` ADD COLUMN `actions` longtext NOT NULL;");
333 }
334
335 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_pages` LIKE 'revision_id';")) {
336 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_pages` ADD COLUMN `revision_id` int(11) NOT NULL DEFAULT '0' AFTER actions;");
337 }
338
339 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_pages` WHERE key_name = 'page_id';");
340 if (is_null($index)) {
341 $wpdb->query("CREATE INDEX `page_id` ON `" . $db_prefix . "e2pdf_pages` (`page_id`);");
342 }
343
344 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_pages` WHERE key_name = 'template_id';");
345 if (is_null($index)) {
346 $wpdb->query("CREATE INDEX `template_id` ON `" . $db_prefix . "e2pdf_pages` (`template_id`);");
347 }
348
349 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_pages` WHERE key_name = 'revision_id';");
350 if (is_null($index)) {
351 $wpdb->query("CREATE INDEX `revision_id` ON `" . $db_prefix . "e2pdf_pages` (`revision_id`);");
352 }
353
354 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_pages` LIKE 'PID';")) {
355 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_pages` ADD COLUMN `PID` bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;");
356 }
357
358 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_elements` (
359 `PID` bigint(20) NOT NULL AUTO_INCREMENT,
360 `page_id` int(11) NOT NULL DEFAULT '0',
361 `template_id` int(11) NOT NULL DEFAULT '0',
362 `element_id` int(11) NOT NULL DEFAULT '0',
363 `name` text NOT NULL,
364 `type` varchar(255) NOT NULL,
365 `top` int(11) NOT NULL DEFAULT '0',
366 `left` int(11) NOT NULL DEFAULT '0',
367 `width` int(11) NOT NULL DEFAULT '0',
368 `height` int(11) NOT NULL DEFAULT '0',
369 `value` longtext NOT NULL,
370 `properties` longtext NOT NULL,
371 `actions` longtext NOT NULL,
372 `revision_id` int(11) NOT NULL DEFAULT '0',
373 PRIMARY KEY (`PID`)
374 ) " . $collate . "");
375
376 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_elements` LIKE 'actions';")) {
377 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` ADD COLUMN `actions` longtext NOT NULL;");
378 }
379
380 if ($wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_pages` LIKE 'ID';") && $wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_elements` LIKE 'ID';")) {
381 $wpdb->query("UPDATE `" . $db_prefix . "e2pdf_elements` ee INNER JOIN `" . $db_prefix . "e2pdf_pages` ep ON ee.page_id = ep.ID set ee.page_id = ep.page_id;");
382 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_pages` DROP COLUMN `ID`;");
383 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` DROP COLUMN `ID`;");
384 }
385
386 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_elements` LIKE 'name';")) {
387 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` ADD COLUMN `name` text NOT NULL AFTER element_id;");
388 }
389
390 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_elements` LIKE 'revision_id';")) {
391 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` ADD COLUMN `revision_id` int(11) NOT NULL DEFAULT '0' AFTER actions;");
392 }
393
394 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_elements` WHERE key_name = 'page_id';");
395 if (is_null($index)) {
396 $wpdb->query("CREATE INDEX `page_id` ON `" . $db_prefix . "e2pdf_elements` (`page_id`);");
397 }
398
399 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_elements` WHERE key_name = 'template_id'");
400 if (is_null($index)) {
401 $wpdb->query("CREATE INDEX `template_id` ON `" . $db_prefix . "e2pdf_elements` (`template_id`); ");
402 }
403
404 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_elements` WHERE key_name = 'revision_id'");
405 if (is_null($index)) {
406 $wpdb->query("CREATE INDEX `revision_id` ON `" . $db_prefix . "e2pdf_elements` (`revision_id`); ");
407 }
408
409 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_elements` LIKE 'PID';")) {
410 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` ADD COLUMN `PID` bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;");
411 }
412
413 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_revisions` (
414 `PID` bigint(20) NOT NULL AUTO_INCREMENT,
415 `revision_id` int(11) NOT NULL DEFAULT '0',
416 `template_id` int(11) NOT NULL DEFAULT '0',
417 `pdf` text,
418 `title` text,
419 `created_at` datetime NOT NULL,
420 `updated_at` datetime NOT NULL,
421 `flatten` enum('0','1','2') NOT NULL DEFAULT '0',
422 `tab_order` enum('0','1','2','3','4') NOT NULL DEFAULT '0',
423 `compression` int(1) NOT NULL DEFAULT '-1',
424 `optimization` int(1) NOT NULL DEFAULT '-1',
425 `appearance` enum('0','1') NOT NULL DEFAULT '0',
426 `width` int(11) NOT NULL DEFAULT '0',
427 `height` int(11) NOT NULL DEFAULT '0',
428 `extension` varchar(255) NOT NULL,
429 `item` varchar(255) NOT NULL,
430 `item1` varchar(255) NOT NULL,
431 `item2` varchar(255) NOT NULL,
432 `format` varchar(255) NOT NULL DEFAULT 'pdf',
433 `resample` varchar(255) NOT NULL DEFAULT '100',
434 `dataset_title` text NOT NULL,
435 `dataset_title1` text NOT NULL,
436 `dataset_title2` text NOT NULL,
437 `button_title` text NOT NULL,
438 `dpdf` text NOT NULL,
439 `inline` enum('0','1') NOT NULL DEFAULT '0',
440 `auto` enum('0','1') NOT NULL DEFAULT '0',
441 `rtl` enum('0','1') NOT NULL DEFAULT '0',
442 `font_processor` enum('0','1') NOT NULL DEFAULT '0',
443 `name` text NOT NULL,
444 `savename` text NOT NULL,
445 `password` text NOT NULL,
446 `owner_password` text NOT NULL,
447 `permissions` longtext NOT NULL,
448 `hooks` longtext NOT NULL,
449 `meta_title` text NOT NULL,
450 `meta_subject` text NOT NULL,
451 `meta_author` text NOT NULL,
452 `meta_keywords` text NOT NULL,
453 `lang_code` varchar(255) NOT NULL,
454 `font` varchar(255) NOT NULL,
455 `font_size` varchar(255) NOT NULL,
456 `font_color` varchar(255) NOT NULL,
457 `line_height` varchar(255) NOT NULL,
458 `text_align` varchar(255) NOT NULL,
459 `fonts` longtext NOT NULL,
460 `attachments` longtext NOT NULL,
461 `author` int(11) NOT NULL,
462 `properties` longtext NOT NULL,
463 `actions` longtext NOT NULL,
464 PRIMARY KEY (`PID`)
465 ) " . $collate . "");
466
467 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_revisions` WHERE key_name = 'revision_id';");
468 if (is_null($index)) {
469 $wpdb->query("CREATE INDEX `revision_id` ON `" . $db_prefix . "e2pdf_revisions` (`revision_id`);");
470 }
471
472 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_revisions` WHERE key_name = 'template_id';");
473 if (is_null($index)) {
474 $wpdb->query("CREATE INDEX `template_id` ON `" . $db_prefix . "e2pdf_revisions` (`template_id`);");
475 }
476
477 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'lang_code';")) {
478 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `lang_code` varchar(255) NOT NULL AFTER meta_keywords;");
479 }
480
481 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'actions';")) {
482 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `actions` longtext NOT NULL AFTER author;");
483 }
484
485 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'properties';")) {
486 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `properties` longtext NOT NULL AFTER author;");
487 }
488
489 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'rtl';")) {
490 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `rtl` enum('0','1') NOT NULL DEFAULT '0' AFTER auto;");
491 }
492
493 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'font_processor';")) {
494 if (get_option('e2pdf_font_processor', '0') == '1') {
495 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `font_processor` enum('0','1') NOT NULL DEFAULT '1' AFTER rtl;");
496 } else {
497 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `font_processor` enum('0','1') NOT NULL DEFAULT '0' AFTER rtl;");
498 }
499 }
500
501 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'text_align';")) {
502 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `text_align` varchar(255) NOT NULL AFTER line_height;");
503 }
504
505 $tab_order = $wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'tab_order';", 1);
506 if ($tab_order === null) {
507 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `tab_order` enum('0','1','2','3','4') NOT NULL DEFAULT '0' AFTER flatten;");
508 } elseif (strpos($tab_order, "'4'") === false) {
509 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` MODIFY COLUMN `tab_order` enum('0','1','2','3','4') NOT NULL DEFAULT '0';");
510 }
511
512 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'item1';")) {
513 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `item1` varchar(255) NOT NULL AFTER item;");
514 }
515
516 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'item2';")) {
517 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `item2` varchar(255) NOT NULL AFTER item1;");
518 }
519
520 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'dataset_title1';")) {
521 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `dataset_title1` text NOT NULL AFTER dataset_title;");
522 }
523
524 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'dataset_title2';")) {
525 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `dataset_title2` text NOT NULL AFTER dataset_title1;");
526 }
527
528 if ($wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` WHERE Field = 'format' and Type LIKE '%enum%';")) {
529 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` DROP COLUMN `format`;");
530 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `format` varchar(255) NOT NULL DEFAULT 'pdf' AFTER item2;");
531 }
532
533 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'resample';")) {
534 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `resample` varchar(255) NOT NULL DEFAULT '100' AFTER format;");
535 }
536
537 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'owner_password';")) {
538 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `owner_password` text NOT NULL AFTER password;");
539 }
540
541 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'permissions';")) {
542 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `permissions` longtext NOT NULL AFTER owner_password;");
543 }
544
545 $wpdb->query("UPDATE `" . $db_prefix . "e2pdf_revisions` SET permissions = 'a:1:{i:0;s:8:\"printing\";}' WHERE permissions = ''");
546
547 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'hooks';")) {
548 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `hooks` longtext NOT NULL AFTER permissions;");
549 }
550
551 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'dpdf';")) {
552 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `dpdf` text NOT NULL AFTER button_title;");
553 }
554
555 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'savename';")) {
556 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `savename` text NOT NULL AFTER name;");
557 }
558
559 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'PID';")) {
560 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `PID` bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;");
561 }
562
563 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'optimization';")) {
564 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `optimization` int(1) NOT NULL DEFAULT '-1' AFTER compression;");
565 }
566
567 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'attachments';")) {
568 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `attachments` longtext NOT NULL AFTER fonts;");
569 }
570
571 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_bulks` (
572 `ID` int(11) NOT NULL AUTO_INCREMENT,
573 `uid` varchar(255) NOT NULL,
574 `template_id` int(11) NOT NULL DEFAULT '0',
575 `count` int(11) NOT NULL DEFAULT '0',
576 `total` int(11) NOT NULL DEFAULT '0',
577 `dataset` longtext NOT NULL,
578 `datasets` longtext NOT NULL,
579 `options` longtext NOT NULL,
580 `status` varchar(255) NOT NULL DEFAULT 'pending',
581 `created_at` datetime NOT NULL,
582 PRIMARY KEY (`ID`)
583 ) " . $collate . "");
584
585 if (!$this->db_check($db_prefix) && $maybe_row_format) {
586 $this->db_row_format($db_prefix);
587 } else {
588 $this->db_optimize($db_prefix);
589 update_option('e2pdf_font_processor', '1');
590 }
591
592 return true;
593 }
594
595 public function db_test_row_format($db_prefix) {
596 global $wpdb;
597
598 $collate = $this->db_collate() . ' ROW_FORMAT=DYNAMIC';
599
600 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_test_db` (
601 `ID` int(11) NOT NULL AUTO_INCREMENT,
602 PRIMARY KEY (`ID`)
603 ) " . $collate . "");
604
605 $pass = $wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_test_db` LIKE 'ID';");
606 $wpdb->query("DROP TABLE IF EXISTS `" . $db_prefix . "e2pdf_test_db`;");
607
608 if ($pass) {
609 return true;
610 } else {
611 return false;
612 }
613 }
614
615 public function db_row_format($db_prefix) {
616 global $wpdb;
617 if ($this->db_test_row_format($db_prefix)) {
618 $db_structure = $this->db_structure($db_prefix);
619 foreach ($db_structure as $table => $columns) {
620 $wpdb->query('ALTER TABLE `' . $db_prefix . $table . '` ROW_FORMAT=DYNAMIC;');
621 $wpdb->query('OPTIMIZE TABLE `' . $db_prefix . $table . '`;');
622 }
623 $this->db_init($db_prefix, false);
624 }
625 return true;
626 }
627
628 public function db_optimize($db_prefix) {
629 global $wpdb;
630 $db_structure = $this->db_structure($db_prefix);
631 foreach ($db_structure as $table => $columns) {
632 $wpdb->query("OPTIMIZE TABLE `" . $db_prefix . $table . "`;");
633 }
634 return true;
635 }
636
637 public function db_repair($db_prefix) {
638 global $wpdb;
639 $db_structure = $this->db_structure($db_prefix);
640 foreach ($db_structure as $table => $columns) {
641 $wpdb->query("REPAIR TABLE `" . $db_prefix . $table . "`;");
642 }
643 return true;
644 }
645
646 public function db_repair_collate($db_prefix) {
647 global $wpdb;
648
649 $db_structure = $this->db_structure($db_prefix);
650
651 $collate = '';
652 if (!empty($wpdb->charset)) {
653 $collate = 'CONVERT TO CHARACTER SET ' . $wpdb->charset;
654 }
655 if (!empty($wpdb->collate)) {
656 $collate .= ' COLLATE ' . $wpdb->collate;
657 }
658
659 if (!empty($collate)) {
660 foreach ($db_structure as $table => $columns) {
661 $wpdb->query('ALTER TABLE `' . $db_prefix . $table . '` ' . $collate . ';');
662 $wpdb->query('OPTIMIZE TABLE `' . $db_prefix . $table . '`;');
663 }
664 $this->db_init($db_prefix, false);
665 }
666 }
667
668 public function db_collate() {
669 global $wpdb;
670 return $wpdb->has_cap('collation') ? $wpdb->get_charset_collate() : 'CHARSET=utf8 COLLATE=utf8_general_ci';
671 }
672
673 public function db_check($db_prefix) {
674 $db_structure = $this->db_structure($db_prefix, true);
675 foreach ($db_structure as $table) {
676 foreach ($table['columns'] as $column) {
677 if (!isset($column['check']) || (isset($column['check']) && !$column['check'])) {
678 return false;
679 }
680 }
681 }
682 return true;
683 }
684
685 public function db_check_collate($db_prefix) {
686 global $wpdb;
687 $db_structure = $this->db_structure($db_prefix);
688 if (!empty($wpdb->collate)) {
689 foreach ($db_structure as $table => $columns) {
690 $condition = array(
691 'TABLE_SCHEMA' => array(
692 'condition' => '=',
693 'value' => DB_NAME,
694 'type' => '%s',
695 ),
696 'TABLE_NAME' => array(
697 'condition' => '=',
698 'value' => $db_prefix . $table,
699 'type' => '%s',
700 ),
701 'TABLE_COLLATION' => array(
702 'condition' => '=',
703 'value' => $wpdb->collate,
704 'type' => '%s',
705 ),
706 );
707 $where = $this->prepare_where($condition);
708 $check = $wpdb->get_var($wpdb->prepare('SELECT COUNT(*) FROM `INFORMATION_SCHEMA`.`TABLES` ' . $where['sql'] . '', $where['filter']));
709 if (!$check) {
710 return false;
711 }
712 }
713 }
714 return true;
715 }
716
717 public function db_structure($db_prefix, $check = false) {
718 global $wpdb;
719
720 $db_structure = array(
721 'e2pdf_templates' => array(
722 'format' => __('Undefined', 'e2pdf'),
723 'check' => false,
724 'columns' => array(
725 'ID' => array(),
726 'uid' => array(),
727 'pdf' => array(),
728 'title' => array(),
729 'created_at' => array(),
730 'updated_at' => array(),
731 'flatten' => array(),
732 'tab_order' => array(),
733 'compression' => array(),
734 'optimization' => array(),
735 'appearance' => array(),
736 'width' => array(),
737 'height' => array(),
738 'extension' => array(),
739 'item' => array(),
740 'item1' => array(),
741 'item2' => array(),
742 'format' => array(),
743 'resample' => array(),
744 'dataset_title' => array(),
745 'dataset_title1' => array(),
746 'dataset_title2' => array(),
747 'button_title' => array(),
748 'dpdf' => array(),
749 'inline' => array(),
750 'auto' => array(),
751 'rtl' => array(),
752 'font_processor' => array(),
753 'name' => array(),
754 'savename' => array(),
755 'password' => array(),
756 'owner_password' => array(),
757 'permissions' => array(),
758 'hooks' => array(),
759 'meta_title' => array(),
760 'meta_subject' => array(),
761 'meta_author' => array(),
762 'meta_keywords' => array(),
763 'lang_code' => array(),
764 'font' => array(),
765 'font_size' => array(),
766 'font_color' => array(),
767 'line_height' => array(),
768 'text_align' => array(),
769 'fonts' => array(),
770 'attachments' => array(),
771 'trash' => array(),
772 'activated' => array(),
773 'locked' => array(),
774 'author' => array(),
775 'properties' => array(),
776 'actions' => array(),
777 ),
778 ),
779 'e2pdf_entries' => array(
780 'format' => __('Undefined', 'e2pdf'),
781 'check' => false,
782 'columns' => array(
783 'ID' => array(),
784 'uid' => array(),
785 'entry' => array(),
786 'pdf_num' => array(),
787 ),
788 ),
789 'e2pdf_datasets' => array(
790 'format' => '',
791 'check' => false,
792 'columns' => array(
793 'ID' => array(),
794 'extension' => array(),
795 'item' => array(),
796 'entry' => array(),
797 'created_at' => array(),
798 ),
799 ),
800 'e2pdf_pages' => array(
801 'format' => __('Undefined', 'e2pdf'),
802 'check' => false,
803 'columns' => array(
804 'PID' => array(),
805 'page_id' => array(),
806 'template_id' => array(),
807 'properties' => array(),
808 'actions' => array(),
809 'revision_id' => array(),
810 ),
811 ),
812 'e2pdf_elements' => array(
813 'format' => __('Undefined', 'e2pdf'),
814 'check' => false,
815 'columns' => array(
816 'PID' => array(),
817 'page_id' => array(),
818 'template_id' => array(),
819 'element_id' => array(),
820 'name' => array(),
821 'type' => array(),
822 'top' => array(),
823 'left' => array(),
824 'width' => array(),
825 'height' => array(),
826 'value' => array(),
827 'properties' => array(),
828 'actions' => array(),
829 'revision_id' => array(),
830 ),
831 ),
832 'e2pdf_revisions' => array(
833 'format' => __('Undefined', 'e2pdf'),
834 'check' => false,
835 'columns' => array(
836 'PID' => array(),
837 'revision_id' => array(),
838 'template_id' => array(),
839 'pdf' => array(),
840 'title' => array(),
841 'created_at' => array(),
842 'updated_at' => array(),
843 'flatten' => array(),
844 'tab_order' => array(),
845 'compression' => array(),
846 'optimization' => array(),
847 'appearance' => array(),
848 'width' => array(),
849 'height' => array(),
850 'extension' => array(),
851 'item' => array(),
852 'item1' => array(),
853 'item2' => array(),
854 'format' => array(),
855 'resample' => array(),
856 'dataset_title' => array(),
857 'dataset_title1' => array(),
858 'dataset_title2' => array(),
859 'button_title' => array(),
860 'dpdf' => array(),
861 'inline' => array(),
862 'auto' => array(),
863 'rtl' => array(),
864 'font_processor' => array(),
865 'name' => array(),
866 'savename' => array(),
867 'password' => array(),
868 'owner_password' => array(),
869 'permissions' => array(),
870 'hooks' => array(),
871 'meta_title' => array(),
872 'meta_subject' => array(),
873 'meta_author' => array(),
874 'meta_keywords' => array(),
875 'lang_code' => array(),
876 'font' => array(),
877 'font_size' => array(),
878 'font_color' => array(),
879 'line_height' => array(),
880 'text_align' => array(),
881 'fonts' => array(),
882 'attachments' => array(),
883 'author' => array(),
884 'properties' => array(),
885 'actions' => array(),
886 ),
887 ),
888 'e2pdf_bulks' => array(
889 'format' => __('Undefined', 'e2pdf'),
890 'check' => false,
891 'columns' => array(
892 'ID' => array(),
893 'uid' => array(),
894 'template_id' => array(),
895 'count' => array(),
896 'total' => array(),
897 'dataset' => array(),
898 'datasets' => array(),
899 'options' => array(),
900 'status' => array(),
901 'created_at' => array(),
902 ),
903 ),
904 );
905
906 if ($check) {
907 foreach ($db_structure as $table_key => $table) {
908 $condition = array(
909 'TABLE_SCHEMA' => array(
910 'condition' => '=',
911 'value' => DB_NAME,
912 'type' => '%s',
913 ),
914 'TABLE_NAME' => array(
915 'condition' => '=',
916 'value' => $db_prefix . $table_key,
917 'type' => '%s',
918 ),
919 );
920 $where = $this->prepare_where($condition);
921 $table_exists = $wpdb->get_var($wpdb->prepare('SELECT COUNT(*) FROM `INFORMATION_SCHEMA`.`TABLES` ' . $where['sql'] . '', $where['filter']));
922 if ($table_exists) {
923
924 $db_structure[$table_key]['check'] = true;
925 $table_columns = $wpdb->get_results($wpdb->prepare('SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` ' . $where['sql'] . '', $where['filter']), ARRAY_A);
926 $table_data = $wpdb->get_row($wpdb->prepare('SELECT `ROW_FORMAT`, `TABLE_COLLATION` FROM `INFORMATION_SCHEMA`.`TABLES` ' . $where['sql'] . '', $where['filter']), ARRAY_A);
927
928 $db_structure[$table_key]['format'] = !empty($table_data['ROW_FORMAT']) ? $table_data['ROW_FORMAT'] : '';
929 $db_structure[$table_key]['collation'] = !empty($table_data['TABLE_COLLATION']) ? $table_data['TABLE_COLLATION'] : '';
930
931 foreach ($table_columns as $table_column) {
932 $table_column_name = isset($table_column['COLUMN_NAME']) ? $table_column['COLUMN_NAME'] : false;
933 if ($table_column_name) {
934 if (isset($table['columns'][$table_column_name])) {
935 $db_structure[$table_key]['columns'][$table_column_name]['check'] = true;
936 } else {
937 $db_structure[$table_key]['columns'][$table_column_name]['check'] = false;
938 }
939 }
940 }
941 }
942 }
943 }
944 return $db_structure;
945 }
946 }
947