PluginProbe
E2Pdf – Export Pdf Tool for WordPress / 1.32.51
E2Pdf – Export Pdf Tool for WordPress v1.32.51
1.32.51 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 All 73 releases
← All changes | classes/helper/e2pdf-db.php +884 -15 1.06.021.32.51 View file →
@@ -3,9 +3,9 @@
3 3 /**
4 4 * E2pdf Get Helper
5 5 *
6 6 * @copyright Copyright 2017 https://e2pdf.com
7 - * @license GPL v2
7 + * @license GPLv3
8 8 * @version 1
9 9 * @link https://e2pdf.com
10 10 * @since 0.00.01
11 11 */
@@ -16,29 +16,51 @@
16 16 class Helper_E2pdf_Db {
17 17
18 18 /**
19 19 * Prepare WHERE for sql requests
20 - *
21 20 * @param string $condition - Array of conditions
22 - *
23 21 * @return array - Filtered WHERE request
24 22 */
25 - public function prepare_where($condition = array()) {
23 + public function prepare_where($condition = array(), $sub_query = false) {
26 24
27 25 $sql = array();
28 26 $filter = array();
27 + if (!$sub_query) {
28 + $sql[] = " WHERE 1 = 1";
29 + }
30 + $condition = apply_filters('e2pdf_helper_db_prepare_where_condition', $condition);
29 31
30 - $sql[] = " WHERE '1' = '1'";
31 32 if (!empty($condition)) {
32 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 +
33 40 if (is_array($value['value'])) {
34 41 foreach ($value['value'] as $sub_value) {
35 - $sql[] = " `{$key}` {$value['condition']} '{$value['type']}'";
42 + $sql[] = " " . implode('.', $sql_keys) . " {$value['condition']} '{$value['type']}'";
36 43 $filter[] = $sub_value;
37 44 }
38 45 } else {
39 - $sql[] = " `{$key}` {$value['condition']} '{$value['type']}'";
40 - $filter[] = $value['value'];
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 + }
41 63 }
42 64 }
43 65 }
44 66
@@ -43,35 +65,882 @@
43 65 }
44 66
45 67 $where = array(
46 68 'sql' => implode(' AND', $sql),
47 - 'filter' => $filter
69 + 'filter' => $filter,
48 70 );
49 71
50 -
51 - return $where;
72 + return apply_filters('e2pdf_helper_db_prepare_where', $where, $condition);
52 73 }
53 74
54 75 /**
55 76 * Prepare ORDER_BY for sql requests
56 - *
57 77 * @param string $condition - Array of conditions
58 - *
59 78 * @return array - Filtered ORDER_BY request
60 79 */
61 80 public function prepare_orderby($condition = array()) {
81 +
62 82 $orderby = '';
83 + $condition = apply_filters('e2pdf_helper_db_prepare_orderby_condition', $condition);
84 +
63 85 if (isset($condition['orderby']) && isset($condition['order'])) {
64 86 $orderby .= " ORDER BY {$condition['orderby']} {$condition['order']}";
65 87 }
66 - return $orderby;
88 +
89 + return apply_filters('e2pdf_helper_db_prepare_orderby', $orderby, $condition);
67 90 }
68 91
69 92 public function prepare_limit($condition = array()) {
93 +
70 94 $limit = '';
95 + $condition = apply_filters('e2pdf_helper_db_prepare_limit_condition', $condition);
96 +
71 97 if (isset($condition['limit']) && isset($condition['offset'])) {
72 98 $limit .= " LIMIT {$condition['offset']}, {$condition['limit']}";
73 99 }
74 - return $limit;
100 +
101 + return apply_filters('e2pdf_helper_db_prepare_limit', $limit, $condition);
75 102 }
76 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 + }
77 946 }