NerdsAndCompany\Schematic\Services\Plugins::import PHP Метод

import() публичный Метод

public import ( array $pluginDefinitions, boolean $force = false ) : Result
$pluginDefinitions array
$force boolean
Результат Result
    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();
    }

Usage Example

Пример #1
0
 /**
  * Test default import functionality.
  *
  * @covers ::import
  */
 public function testImportWithNotInstalledPlugin()
 {
     $this->mockMultipleServices();
     $this->getMockBasePlugin();
     $data = $this->getPluginsData();
     $data[$this->pluginHandle]['isInstalled'] = false;
     $import = $this->schematicPluginsService->import($data);
     $this->assertTrue($import instanceof Result);
     $this->assertFalse($import->hasErrors());
 }