PluginProbe
E2Pdf – Export Pdf Tool for WordPress / 1.32.32
E2Pdf – Export Pdf Tool for WordPress v1.32.32
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.32, at classes/helper/e2pdf-db.php

941 lines 42.8 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') 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 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'tab_order';")) {
222 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `tab_order` enum('0','1','2','3') NOT NULL DEFAULT '0' AFTER flatten;");
223 }
224
225 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'item1';")) {
226 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `item1` varchar(255) NOT NULL AFTER item;");
227 }
228
229 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'item2';")) {
230 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `item2` varchar(255) NOT NULL AFTER item1;");
231 }
232
233 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'dataset_title1';")) {
234 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `dataset_title1` text NOT NULL AFTER dataset_title;");
235 }
236
237 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'dataset_title2';")) {
238 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `dataset_title2` text NOT NULL AFTER dataset_title1;");
239 }
240
241 if ($wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` WHERE Field = 'format' and Type LIKE '%enum%';")) {
242 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` DROP COLUMN `format`;");
243 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `format` varchar(255) NOT NULL DEFAULT 'pdf' AFTER item2;");
244 }
245
246 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'resample';")) {
247 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `resample` varchar(255) NOT NULL DEFAULT '100' AFTER format;");
248 }
249
250 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'owner_password';")) {
251 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `owner_password` text NOT NULL AFTER password;");
252 }
253
254 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'permissions';")) {
255 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `permissions` longtext NOT NULL AFTER owner_password;");
256 }
257
258 $wpdb->query("UPDATE `" . $db_prefix . "e2pdf_templates` SET permissions = 'a:1:{i:0;s:8:\"printing\";}' WHERE permissions = ''");
259
260 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'hooks';")) {
261 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `hooks` longtext NOT NULL AFTER permissions;");
262 }
263
264 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'dpdf';")) {
265 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `dpdf` text NOT NULL AFTER button_title;");
266 }
267
268 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'savename';")) {
269 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `savename` text NOT NULL AFTER name;");
270 }
271
272 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'optimization';")) {
273 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `optimization` int(1) NOT NULL DEFAULT '-1' AFTER compression;");
274 }
275
276 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_templates` LIKE 'attachments';")) {
277 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` ADD COLUMN `attachments` longtext NOT NULL AFTER fonts;");
278 }
279
280 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_entries` (
281 `ID` bigint(20) NOT NULL AUTO_INCREMENT,
282 `uid` varchar(255) NOT NULL,
283 `entry` longtext,
284 `pdf_num` int(11) NOT NULL DEFAULT '0',
285 PRIMARY KEY (`ID`)
286 ) " . $collate . "");
287
288 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_entries` LIKE 'pdf_num';")) {
289 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_entries` ADD COLUMN `pdf_num` int(11) NOT NULL DEFAULT '0';");
290 }
291
292 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_entries` WHERE key_name = 'uid';");
293 if (is_null($index)) {
294 $wpdb->query("CREATE INDEX `uid` ON `" . $db_prefix . "e2pdf_entries` (`uid`);");
295 }
296
297 if ($wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_entries` WHERE Field = 'ID' and Type LIKE 'int(11)';")) {
298 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_entries` CHANGE `ID` `ID` bigint(20) NOT NULL AUTO_INCREMENT;");
299 }
300
301 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_datasets` (
302 `ID` bigint(20) NOT NULL AUTO_INCREMENT,
303 `extension` varchar(255) NOT NULL,
304 `item` varchar(255) NOT NULL,
305 `entry` longtext,
306 `created_at` datetime NOT NULL,
307 PRIMARY KEY (`ID`)
308 ) " . $collate . "");
309
310 if ($wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_datasets` WHERE Field = 'ID' and Type LIKE 'int(11)';")) {
311 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_datasets` CHANGE `ID` `ID` bigint(20) NOT NULL AUTO_INCREMENT;");
312 }
313
314 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_datasets` LIKE 'created_at';")) {
315 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_datasets` ADD COLUMN `created_at` datetime NOT NULL AFTER entry;");
316 }
317
318 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_pages` (
319 `PID` bigint(20) NOT NULL AUTO_INCREMENT,
320 `page_id` int(11) NOT NULL DEFAULT '0',
321 `template_id` int(11) NOT NULL DEFAULT '0',
322 `properties` longtext NOT NULL,
323 `actions` longtext NOT NULL,
324 `revision_id` int(11) NOT NULL DEFAULT '0',
325 PRIMARY KEY (`PID`)
326 ) " . $collate . "");
327
328 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_pages` LIKE 'actions';")) {
329 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_pages` ADD COLUMN `actions` longtext NOT NULL;");
330 }
331
332 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_pages` LIKE 'revision_id';")) {
333 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_pages` ADD COLUMN `revision_id` int(11) NOT NULL DEFAULT '0' AFTER actions;");
334 }
335
336 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_pages` WHERE key_name = 'page_id';");
337 if (is_null($index)) {
338 $wpdb->query("CREATE INDEX `page_id` ON `" . $db_prefix . "e2pdf_pages` (`page_id`);");
339 }
340
341 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_pages` WHERE key_name = 'template_id';");
342 if (is_null($index)) {
343 $wpdb->query("CREATE INDEX `template_id` ON `" . $db_prefix . "e2pdf_pages` (`template_id`);");
344 }
345
346 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_pages` WHERE key_name = 'revision_id';");
347 if (is_null($index)) {
348 $wpdb->query("CREATE INDEX `revision_id` ON `" . $db_prefix . "e2pdf_pages` (`revision_id`);");
349 }
350
351 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_pages` LIKE 'PID';")) {
352 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_pages` ADD COLUMN `PID` bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;");
353 }
354
355 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_elements` (
356 `PID` bigint(20) NOT NULL AUTO_INCREMENT,
357 `page_id` int(11) NOT NULL DEFAULT '0',
358 `template_id` int(11) NOT NULL DEFAULT '0',
359 `element_id` int(11) NOT NULL DEFAULT '0',
360 `name` text NOT NULL,
361 `type` varchar(255) NOT NULL,
362 `top` int(11) NOT NULL DEFAULT '0',
363 `left` int(11) NOT NULL DEFAULT '0',
364 `width` int(11) NOT NULL DEFAULT '0',
365 `height` int(11) NOT NULL DEFAULT '0',
366 `value` longtext NOT NULL,
367 `properties` longtext NOT NULL,
368 `actions` longtext NOT NULL,
369 `revision_id` int(11) NOT NULL DEFAULT '0',
370 PRIMARY KEY (`PID`)
371 ) " . $collate . "");
372
373 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_elements` LIKE 'actions';")) {
374 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` ADD COLUMN `actions` longtext NOT NULL;");
375 }
376
377 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';")) {
378 $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;");
379 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_pages` DROP COLUMN `ID`;");
380 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` DROP COLUMN `ID`;");
381 }
382
383 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_elements` LIKE 'name';")) {
384 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` ADD COLUMN `name` text NOT NULL AFTER element_id;");
385 }
386
387 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_elements` LIKE 'revision_id';")) {
388 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` ADD COLUMN `revision_id` int(11) NOT NULL DEFAULT '0' AFTER actions;");
389 }
390
391 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_elements` WHERE key_name = 'page_id';");
392 if (is_null($index)) {
393 $wpdb->query("CREATE INDEX `page_id` ON `" . $db_prefix . "e2pdf_elements` (`page_id`);");
394 }
395
396 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_elements` WHERE key_name = 'template_id'");
397 if (is_null($index)) {
398 $wpdb->query("CREATE INDEX `template_id` ON `" . $db_prefix . "e2pdf_elements` (`template_id`); ");
399 }
400
401 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_elements` WHERE key_name = 'revision_id'");
402 if (is_null($index)) {
403 $wpdb->query("CREATE INDEX `revision_id` ON `" . $db_prefix . "e2pdf_elements` (`revision_id`); ");
404 }
405
406 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_elements` LIKE 'PID';")) {
407 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` ADD COLUMN `PID` bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;");
408 }
409
410 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_revisions` (
411 `PID` bigint(20) NOT NULL AUTO_INCREMENT,
412 `revision_id` int(11) NOT NULL DEFAULT '0',
413 `template_id` int(11) NOT NULL DEFAULT '0',
414 `pdf` text,
415 `title` text,
416 `created_at` datetime NOT NULL,
417 `updated_at` datetime NOT NULL,
418 `flatten` enum('0','1','2') NOT NULL DEFAULT '0',
419 `tab_order` enum('0','1','2','3') NOT NULL DEFAULT '0',
420 `compression` int(1) NOT NULL DEFAULT '-1',
421 `optimization` int(1) NOT NULL DEFAULT '-1',
422 `appearance` enum('0','1') NOT NULL DEFAULT '0',
423 `width` int(11) NOT NULL DEFAULT '0',
424 `height` int(11) NOT NULL DEFAULT '0',
425 `extension` varchar(255) NOT NULL,
426 `item` varchar(255) NOT NULL,
427 `item1` varchar(255) NOT NULL,
428 `item2` varchar(255) NOT NULL,
429 `format` varchar(255) NOT NULL DEFAULT 'pdf',
430 `resample` varchar(255) NOT NULL DEFAULT '100',
431 `dataset_title` text NOT NULL,
432 `dataset_title1` text NOT NULL,
433 `dataset_title2` text NOT NULL,
434 `button_title` text NOT NULL,
435 `dpdf` text NOT NULL,
436 `inline` enum('0','1') NOT NULL DEFAULT '0',
437 `auto` enum('0','1') NOT NULL DEFAULT '0',
438 `rtl` enum('0','1') NOT NULL DEFAULT '0',
439 `font_processor` enum('0','1') NOT NULL DEFAULT '0',
440 `name` text NOT NULL,
441 `savename` text NOT NULL,
442 `password` text NOT NULL,
443 `owner_password` text NOT NULL,
444 `permissions` longtext NOT NULL,
445 `hooks` longtext NOT NULL,
446 `meta_title` text NOT NULL,
447 `meta_subject` text NOT NULL,
448 `meta_author` text NOT NULL,
449 `meta_keywords` text NOT NULL,
450 `lang_code` varchar(255) NOT NULL,
451 `font` varchar(255) NOT NULL,
452 `font_size` varchar(255) NOT NULL,
453 `font_color` varchar(255) NOT NULL,
454 `line_height` varchar(255) NOT NULL,
455 `text_align` varchar(255) NOT NULL,
456 `fonts` longtext NOT NULL,
457 `attachments` longtext NOT NULL,
458 `author` int(11) NOT NULL,
459 `properties` longtext NOT NULL,
460 `actions` longtext NOT NULL,
461 PRIMARY KEY (`PID`)
462 ) " . $collate . "");
463
464 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_revisions` WHERE key_name = 'revision_id';");
465 if (is_null($index)) {
466 $wpdb->query("CREATE INDEX `revision_id` ON `" . $db_prefix . "e2pdf_revisions` (`revision_id`);");
467 }
468
469 $index = $wpdb->get_row("SHOW INDEX FROM `" . $db_prefix . "e2pdf_revisions` WHERE key_name = 'template_id';");
470 if (is_null($index)) {
471 $wpdb->query("CREATE INDEX `template_id` ON `" . $db_prefix . "e2pdf_revisions` (`template_id`);");
472 }
473
474 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'lang_code';")) {
475 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `lang_code` varchar(255) NOT NULL AFTER meta_keywords;");
476 }
477
478 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'actions';")) {
479 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `actions` longtext NOT NULL AFTER author;");
480 }
481
482 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'properties';")) {
483 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `properties` longtext NOT NULL AFTER author;");
484 }
485
486 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'rtl';")) {
487 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `rtl` enum('0','1') NOT NULL DEFAULT '0' AFTER auto;");
488 }
489
490 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'font_processor';")) {
491 if (get_option('e2pdf_font_processor', '0') == '1') {
492 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `font_processor` enum('0','1') NOT NULL DEFAULT '1' AFTER rtl;");
493 } else {
494 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `font_processor` enum('0','1') NOT NULL DEFAULT '0' AFTER rtl;");
495 }
496 }
497
498 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'text_align';")) {
499 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `text_align` varchar(255) NOT NULL AFTER line_height;");
500 }
501
502 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'tab_order';")) {
503 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `tab_order` enum('0','1','2','3') NOT NULL DEFAULT '0' AFTER flatten;");
504 }
505
506 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'item1';")) {
507 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `item1` varchar(255) NOT NULL AFTER item;");
508 }
509
510 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'item2';")) {
511 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `item2` varchar(255) NOT NULL AFTER item1;");
512 }
513
514 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'dataset_title1';")) {
515 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `dataset_title1` text NOT NULL AFTER dataset_title;");
516 }
517
518 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'dataset_title2';")) {
519 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `dataset_title2` text NOT NULL AFTER dataset_title1;");
520 }
521
522 if ($wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` WHERE Field = 'format' and Type LIKE '%enum%';")) {
523 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` DROP COLUMN `format`;");
524 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `format` varchar(255) NOT NULL DEFAULT 'pdf' AFTER item2;");
525 }
526
527 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'resample';")) {
528 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `resample` varchar(255) NOT NULL DEFAULT '100' AFTER format;");
529 }
530
531 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'owner_password';")) {
532 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `owner_password` text NOT NULL AFTER password;");
533 }
534
535 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'permissions';")) {
536 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `permissions` longtext NOT NULL AFTER owner_password;");
537 }
538
539 $wpdb->query("UPDATE `" . $db_prefix . "e2pdf_revisions` SET permissions = 'a:1:{i:0;s:8:\"printing\";}' WHERE permissions = ''");
540
541 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'hooks';")) {
542 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `hooks` longtext NOT NULL AFTER permissions;");
543 }
544
545 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'dpdf';")) {
546 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `dpdf` text NOT NULL AFTER button_title;");
547 }
548
549 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'savename';")) {
550 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `savename` text NOT NULL AFTER name;");
551 }
552
553 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'PID';")) {
554 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `PID` bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;");
555 }
556
557 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'optimization';")) {
558 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `optimization` int(1) NOT NULL DEFAULT '-1' AFTER compression;");
559 }
560
561 if (!$wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_revisions` LIKE 'attachments';")) {
562 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_revisions` ADD COLUMN `attachments` longtext NOT NULL AFTER fonts;");
563 }
564
565 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_bulks` (
566 `ID` int(11) NOT NULL AUTO_INCREMENT,
567 `uid` varchar(255) NOT NULL,
568 `template_id` int(11) NOT NULL DEFAULT '0',
569 `count` int(11) NOT NULL DEFAULT '0',
570 `total` int(11) NOT NULL DEFAULT '0',
571 `dataset` longtext NOT NULL,
572 `datasets` longtext NOT NULL,
573 `options` longtext NOT NULL,
574 `status` varchar(255) NOT NULL DEFAULT 'pending',
575 `created_at` datetime NOT NULL,
576 PRIMARY KEY (`ID`)
577 ) " . $collate . "");
578
579 if (!$this->db_check($db_prefix) && $maybe_row_format) {
580 $this->db_row_format($db_prefix);
581 } else {
582 $this->db_optimize($db_prefix);
583 update_option('e2pdf_font_processor', '1');
584 }
585
586 return true;
587 }
588
589 public function db_test_row_format($db_prefix) {
590 global $wpdb;
591
592 $collate = $this->db_collate() . ' ROW_FORMAT=DYNAMIC';
593
594 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_test_db` (
595 `ID` int(11) NOT NULL AUTO_INCREMENT,
596 PRIMARY KEY (`ID`)
597 ) " . $collate . "");
598
599 $pass = $wpdb->get_var("SHOW COLUMNS FROM `" . $db_prefix . "e2pdf_test_db` LIKE 'ID';");
600 $wpdb->query("DROP TABLE IF EXISTS `" . $db_prefix . "e2pdf_test_db`;");
601
602 if ($pass) {
603 return true;
604 } else {
605 return false;
606 }
607 }
608
609 public function db_row_format($db_prefix) {
610 global $wpdb;
611 if ($this->db_test_row_format($db_prefix)) {
612 $db_structure = $this->db_structure($db_prefix);
613 foreach ($db_structure as $table => $columns) {
614 $wpdb->query('ALTER TABLE `' . $db_prefix . $table . '` ROW_FORMAT=DYNAMIC;');
615 $wpdb->query('OPTIMIZE TABLE `' . $db_prefix . $table . '`;');
616 }
617 $this->db_init($db_prefix, false);
618 }
619 return true;
620 }
621
622 public function db_optimize($db_prefix) {
623 global $wpdb;
624 $db_structure = $this->db_structure($db_prefix);
625 foreach ($db_structure as $table => $columns) {
626 $wpdb->query("OPTIMIZE TABLE `" . $db_prefix . $table . "`;");
627 }
628 return true;
629 }
630
631 public function db_repair($db_prefix) {
632 global $wpdb;
633 $db_structure = $this->db_structure($db_prefix);
634 foreach ($db_structure as $table => $columns) {
635 $wpdb->query("REPAIR TABLE `" . $db_prefix . $table . "`;");
636 }
637 return true;
638 }
639
640 public function db_repair_collate($db_prefix) {
641 global $wpdb;
642
643 $db_structure = $this->db_structure($db_prefix);
644
645 $collate = '';
646 if (!empty($wpdb->charset)) {
647 $collate = 'CONVERT TO CHARACTER SET ' . $wpdb->charset;
648 }
649 if (!empty($wpdb->collate)) {
650 $collate .= ' COLLATE ' . $wpdb->collate;
651 }
652
653 if (!empty($collate)) {
654 foreach ($db_structure as $table => $columns) {
655 $wpdb->query('ALTER TABLE `' . $db_prefix . $table . '` ' . $collate . ';');
656 $wpdb->query('OPTIMIZE TABLE `' . $db_prefix . $table . '`;');
657 }
658 $this->db_init($db_prefix, false);
659 }
660 }
661
662 public function db_collate() {
663 global $wpdb;
664 return $wpdb->has_cap('collation') ? $wpdb->get_charset_collate() : 'CHARSET=utf8 COLLATE=utf8_general_ci';
665 }
666
667 public function db_check($db_prefix) {
668 $db_structure = $this->db_structure($db_prefix, true);
669 foreach ($db_structure as $table) {
670 foreach ($table['columns'] as $column) {
671 if (!isset($column['check']) || (isset($column['check']) && !$column['check'])) {
672 return false;
673 }
674 }
675 }
676 return true;
677 }
678
679 public function db_check_collate($db_prefix) {
680 global $wpdb;
681 $db_structure = $this->db_structure($db_prefix);
682 if (!empty($wpdb->collate)) {
683 foreach ($db_structure as $table => $columns) {
684 $condition = array(
685 'TABLE_SCHEMA' => array(
686 'condition' => '=',
687 'value' => DB_NAME,
688 'type' => '%s',
689 ),
690 'TABLE_NAME' => array(
691 'condition' => '=',
692 'value' => $db_prefix . $table,
693 'type' => '%s',
694 ),
695 'TABLE_COLLATION' => array(
696 'condition' => '=',
697 'value' => $wpdb->collate,
698 'type' => '%s',
699 ),
700 );
701 $where = $this->prepare_where($condition);
702 $check = $wpdb->get_var($wpdb->prepare('SELECT COUNT(*) FROM `INFORMATION_SCHEMA`.`TABLES` ' . $where['sql'] . '', $where['filter']));
703 if (!$check) {
704 return false;
705 }
706 }
707 }
708 return true;
709 }
710
711 public function db_structure($db_prefix, $check = false) {
712 global $wpdb;
713
714 $db_structure = array(
715 'e2pdf_templates' => array(
716 'format' => __('Undefined', 'e2pdf'),
717 'check' => false,
718 'columns' => array(
719 'ID' => array(),
720 'uid' => array(),
721 'pdf' => array(),
722 'title' => array(),
723 'created_at' => array(),
724 'updated_at' => array(),
725 'flatten' => array(),
726 'tab_order' => array(),
727 'compression' => array(),
728 'optimization' => array(),
729 'appearance' => array(),
730 'width' => array(),
731 'height' => array(),
732 'extension' => array(),
733 'item' => array(),
734 'item1' => array(),
735 'item2' => array(),
736 'format' => array(),
737 'resample' => array(),
738 'dataset_title' => array(),
739 'dataset_title1' => array(),
740 'dataset_title2' => array(),
741 'button_title' => array(),
742 'dpdf' => array(),
743 'inline' => array(),
744 'auto' => array(),
745 'rtl' => array(),
746 'font_processor' => array(),
747 'name' => array(),
748 'savename' => array(),
749 'password' => array(),
750 'owner_password' => array(),
751 'permissions' => array(),
752 'hooks' => array(),
753 'meta_title' => array(),
754 'meta_subject' => array(),
755 'meta_author' => array(),
756 'meta_keywords' => array(),
757 'lang_code' => array(),
758 'font' => array(),
759 'font_size' => array(),
760 'font_color' => array(),
761 'line_height' => array(),
762 'text_align' => array(),
763 'fonts' => array(),
764 'attachments' => array(),
765 'trash' => array(),
766 'activated' => array(),
767 'locked' => array(),
768 'author' => array(),
769 'properties' => array(),
770 'actions' => array(),
771 ),
772 ),
773 'e2pdf_entries' => array(
774 'format' => __('Undefined', 'e2pdf'),
775 'check' => false,
776 'columns' => array(
777 'ID' => array(),
778 'uid' => array(),
779 'entry' => array(),
780 'pdf_num' => array(),
781 ),
782 ),
783 'e2pdf_datasets' => array(
784 'format' => '',
785 'check' => false,
786 'columns' => array(
787 'ID' => array(),
788 'extension' => array(),
789 'item' => array(),
790 'entry' => array(),
791 'created_at' => array(),
792 ),
793 ),
794 'e2pdf_pages' => array(
795 'format' => __('Undefined', 'e2pdf'),
796 'check' => false,
797 'columns' => array(
798 'PID' => array(),
799 'page_id' => array(),
800 'template_id' => array(),
801 'properties' => array(),
802 'actions' => array(),
803 'revision_id' => array(),
804 ),
805 ),
806 'e2pdf_elements' => array(
807 'format' => __('Undefined', 'e2pdf'),
808 'check' => false,
809 'columns' => array(
810 'PID' => array(),
811 'page_id' => array(),
812 'template_id' => array(),
813 'element_id' => array(),
814 'name' => array(),
815 'type' => array(),
816 'top' => array(),
817 'left' => array(),
818 'width' => array(),
819 'height' => array(),
820 'value' => array(),
821 'properties' => array(),
822 'actions' => array(),
823 'revision_id' => array(),
824 ),
825 ),
826 'e2pdf_revisions' => array(
827 'format' => __('Undefined', 'e2pdf'),
828 'check' => false,
829 'columns' => array(
830 'PID' => array(),
831 'revision_id' => array(),
832 'template_id' => array(),
833 'pdf' => array(),
834 'title' => array(),
835 'created_at' => array(),
836 'updated_at' => array(),
837 'flatten' => array(),
838 'tab_order' => array(),
839 'compression' => array(),
840 'optimization' => array(),
841 'appearance' => array(),
842 'width' => array(),
843 'height' => array(),
844 'extension' => array(),
845 'item' => array(),
846 'item1' => array(),
847 'item2' => array(),
848 'format' => array(),
849 'resample' => array(),
850 'dataset_title' => array(),
851 'dataset_title1' => array(),
852 'dataset_title2' => array(),
853 'button_title' => array(),
854 'dpdf' => array(),
855 'inline' => array(),
856 'auto' => array(),
857 'rtl' => array(),
858 'font_processor' => array(),
859 'name' => array(),
860 'savename' => array(),
861 'password' => array(),
862 'owner_password' => array(),
863 'permissions' => array(),
864 'hooks' => array(),
865 'meta_title' => array(),
866 'meta_subject' => array(),
867 'meta_author' => array(),
868 'meta_keywords' => array(),
869 'lang_code' => array(),
870 'font' => array(),
871 'font_size' => array(),
872 'font_color' => array(),
873 'line_height' => array(),
874 'text_align' => array(),
875 'fonts' => array(),
876 'attachments' => array(),
877 'author' => array(),
878 'properties' => array(),
879 'actions' => array(),
880 ),
881 ),
882 'e2pdf_bulks' => array(
883 'format' => __('Undefined', 'e2pdf'),
884 'check' => false,
885 'columns' => array(
886 'ID' => array(),
887 'uid' => array(),
888 'template_id' => array(),
889 'count' => array(),
890 'total' => array(),
891 'dataset' => array(),
892 'datasets' => array(),
893 'options' => array(),
894 'status' => array(),
895 'created_at' => array(),
896 ),
897 ),
898 );
899
900 if ($check) {
901 foreach ($db_structure as $table_key => $table) {
902 $condition = array(
903 'TABLE_SCHEMA' => array(
904 'condition' => '=',
905 'value' => DB_NAME,
906 'type' => '%s',
907 ),
908 'TABLE_NAME' => array(
909 'condition' => '=',
910 'value' => $db_prefix . $table_key,
911 'type' => '%s',
912 ),
913 );
914 $where = $this->prepare_where($condition);
915 $table_exists = $wpdb->get_var($wpdb->prepare('SELECT COUNT(*) FROM `INFORMATION_SCHEMA`.`TABLES` ' . $where['sql'] . '', $where['filter']));
916 if ($table_exists) {
917
918 $db_structure[$table_key]['check'] = true;
919 $table_columns = $wpdb->get_results($wpdb->prepare('SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` ' . $where['sql'] . '', $where['filter']), ARRAY_A);
920 $table_data = $wpdb->get_row($wpdb->prepare('SELECT `ROW_FORMAT`, `TABLE_COLLATION` FROM `INFORMATION_SCHEMA`.`TABLES` ' . $where['sql'] . '', $where['filter']), ARRAY_A);
921
922 $db_structure[$table_key]['format'] = !empty($table_data['ROW_FORMAT']) ? $table_data['ROW_FORMAT'] : '';
923 $db_structure[$table_key]['collation'] = !empty($table_data['TABLE_COLLATION']) ? $table_data['TABLE_COLLATION'] : '';
924
925 foreach ($table_columns as $table_column) {
926 $table_column_name = isset($table_column['COLUMN_NAME']) ? $table_column['COLUMN_NAME'] : false;
927 if ($table_column_name) {
928 if (isset($table['columns'][$table_column_name])) {
929 $db_structure[$table_key]['columns'][$table_column_name]['check'] = true;
930 } else {
931 $db_structure[$table_key]['columns'][$table_column_name]['check'] = false;
932 }
933 }
934 }
935 }
936 }
937 }
938 return $db_structure;
939 }
940 }
941