123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- <?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');
|