/**
* Import plugin settings
*
* @param string $info
* @param string $settings_mode Options to load plugin settings. One of overwrite, if_not_exists, or ignore
* @return type bool
*/
function transfer_plugins_import($info, $settings_mode = 'if_not_exists')
{
$info = unserialize($info);
if (!$info) {
return false;
}
$version = elgg_extract('transfer_plugins_format', $info);
if ($version != TRANSFER_PLUGINS_FORMAT) {
return false;
}
// @todo check elgg, plugin, and transfer_plugin version compatibility.
if (!isset($info['plugins'])) {
return false;
}
$r = true;
foreach ($info['plugins'] as $plugin_info) {
$plugin_id = $plugin_info['id'];
$plugin = new ElggPlugin($plugin_id);
// not installed
if (!$plugin->isValid()) {
continue;
}
$r &= $plugin->setPriority($plugin_info['priority']);
if ($plugin_info['active'] && !$plugin->isActive()) {
$r &= $plugin->activate();
}
if ($settings_mode != 'ignore' && $plugin_info['settings']) {
foreach ($plugin_info['settings'] as $name => $value) {
switch ($settings_mode) {
case 'overwrite':
$plugin->setSetting($name, $value);
break;
case 'if_not_exists':
// @todo not sure if this works because isset isn't overloaded in ElggPlugin
if (!isset($plugin->{$name})) {
$plugin->setSetting($name, $value);
}
break;
}
}
}
}
return $r;
}