public function import(array $pluginDefinitions, $force = false)
{
Craft::log(Craft::t('Updating Craft'));
if ($this->getUpdatesService()->isCraftDbMigrationNeeded()) {
$result = $this->getUpdatesService()->updateDatabase('craft');
if (!$result['success']) {
throw new Exception($result['message']);
}
}
Craft::log(Craft::t('Importing Plugins'));
foreach ($pluginDefinitions as $handle => $pluginDefinition) {
Craft::log(Craft::t('Applying definitions for {handle}', ['handle' => $handle]));
if ($plugin = $this->getPlugin($handle)) {
if ($pluginDefinition['isInstalled']) {
$isNewPlugin = !$plugin->isInstalled;
if ($isNewPlugin) {
$this->installPluginByHandle($handle);
}
$this->togglePluginByHandle($handle, $pluginDefinition['isEnabled']);
if (!$isNewPlugin && $plugin->isEnabled) {
$this->runMigrations($handle);
}
if (array_key_exists('settings', $pluginDefinition)) {
Craft::log(Craft::t('Saving plugin settings for {handle}', ['handle' => $handle]));
$this->getPluginService()->savePluginSettings($plugin, $pluginDefinition['settings']);
}
} else {
$this->uninstallPluginByHandle($handle);
}
}
}
return $this->getResultModel();
}