blob: f4411ee2030e50ed5b1bc2565f318ec76a0b40a6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
<?php
/**
* Migrate plugins to the new system using ElggPlugin and private settings
*/
$old_ia = elgg_set_ignore_access(true);
$site = get_config('site');
$old_plugin_order = unserialize($site->pluginorder);
$old_enabled_plugins = $site->enabled_plugins;
$db_prefix = get_config('dbprefix');
$plugin_subtype_id = get_subtype_id('object', 'plugin');
// easy one first: make sure the the site owns all plugin entities.
$q = "UPDATE {$db_prefix}entities e
SET owner_guid = $site->guid, container_guid = $site->guid
WHERE e.type = 'object' AND e.subtype = $plugin_subtype_id";
$r = update_data($q);
// rewrite all plugin:setting:* to ELGG_PLUGIN_USER_SETTING_PREFIX . *
$q = "UPDATE {$db_prefix}private_settings
SET name = replace(name, 'plugin:settings:', '" . ELGG_PLUGIN_USER_SETTING_PREFIX . "')
WHERE name LIKE 'plugin:settings:%'";
$r = update_data($q);
// grab current plugin GUIDs to add a temp priority
$q = "SELECT * FROM {$db_prefix}entities e
JOIN {$db_prefix}objects_entity oe ON e.guid = oe.guid
WHERE e.type = 'object' AND e.subtype = $plugin_subtype_id";
$plugins = get_data($q);
foreach ($plugins as $plugin) {
$priority = elgg_namespace_plugin_private_setting('internal', 'priority');
set_private_setting($plugin->guid, $priority, 0);
}
// force regenerating plugin entities
elgg_generate_plugin_entities();
// set the priorities for all plugins
// this function rewrites it to a normal index so use the current one.
elgg_set_plugin_priorities($old_plugin_order);
// add relationships for enabled plugins
if ($old_enabled_plugins) {
// they might only have one plugin enabled.
if (!is_array($old_enabled_plugins)) {
$old_enabled_plugins = array($old_enabled_plugins);
}
// sometimes there were problems and you'd get 1000s of enabled plugins.
$old_enabled_plugins = array_unique($old_enabled_plugins);
foreach ($old_enabled_plugins as $plugin_id) {
$plugin = elgg_get_plugin_from_id($plugin_id);
if ($plugin) {
$plugin->activate();
}
}
}
// invalidate caches
elgg_invalidate_simplecache();
elgg_reset_system_cache();
// clean up.
remove_metadata($site->guid, 'pluginorder');
remove_metadata($site->guid, 'enabled_plugins');
elgg_set_ignore_access($old_id);
/**
* @hack
*
* We stop the upgrade at this point because plugins weren't given the chance to
* load due to the new plugin code introduced with Elgg 1.8. Instead, we manually
* set the version and start the upgrade process again.
*
* The variables from upgrade_code() are available because this script was included
*/
if ($upgrade_version > $version) {
datalist_set('version', $upgrade_version);
}
// add ourselves to the processed_upgrades.
$processed_upgrades[] = '2011010101.php';
$processed_upgrades = array_unique($processed_upgrades);
elgg_set_processed_upgrades($processed_upgrades);
_elgg_upgrade_unlock();
forward('upgrade.php');
|