1 <?php
2
3 4 5 6 7 8 9
10
11 rex_extension::register('BACKUP_BEFORE_DB_IMPORT', 'rex_metainfo_cleanup');
12
13 14 15 16 17
18 function rex_metainfo_cleanup($epOrParams)
19 {
20 $params = $epOrParams instanceof rex_extension_point ? $epOrParams->getParams() : $epOrParams;
21
22 if (isset($params['force']) && $params['force'] != true &&
23 strpos($params['content'], 'CREATE TABLE `' . rex::getTablePrefix() . 'article`') === false &&
24 strpos($params['content'], 'CREATE TABLE ' . rex::getTablePrefix() . 'article') === false
25 ) {
26 return;
27 }
28
29
30 $tables = rex_sql::showTables();
31 if (!isset($tables[rex::getTablePrefix() . 'metainfo_field'])) {
32 return false;
33 }
34
35
36
37 require_once __DIR__ . '/../lib/table_manager.php';
38
39 $sql = rex_sql::factory();
40 $sql->setQuery('SELECT name FROM ' . rex::getTablePrefix() . 'metainfo_field');
41
42 for ($i = 0; $i < $sql->getRows(); ++$i) {
43 $prefix = rex_metainfo_meta_prefix($sql->getValue('name'));
44 $table = rex_metainfo_meta_table($prefix);
45 $tableManager = new rex_metainfo_table_manager($table);
46
47 $tableManager->deleteColumn($sql->getValue('name'));
48
49 $sql->next();
50 }
51
52
53 $tablePrefixes = ['article' => ['art_', 'cat_'], 'media' => ['med_'], 'clang' => ['clang_']];
54 foreach ($tablePrefixes as $table => $prefixes) {
55 $table = rex::getTablePrefix() . $table;
56 $tableManager = new rex_metainfo_table_manager($table);
57
58 foreach (rex_sql::showColumns($table) as $column) {
59 $column = $column['name'];
60 if (in_array(substr($column, 0, 4), $prefixes)) {
61 $tableManager->deleteColumn($column);
62 }
63 }
64 }
65
66 $sql = rex_sql::factory();
67 $sql->setQuery('DELETE FROM ' . rex::getTablePrefix() . 'metainfo_field');
68 }
69