/** * @depends testConstruct */ public function testGets(PluginCollection $collection) { $this->assertCount(2, $collection->getList()); $this->assertCount(1, $collection->getList('plugin_sample')); $this->assertCount(2, $collection->getList(['plugin_sample', 'plugin_sample2'])); $this->assertCount(1, $collection->getList(['plugin_sample', 'plugin_sample3'])); }
/** * 등록된 플러그인의 목록을 반환한다. * * @param bool $refresh true일 경우, cache를 사용하지 않고 다시 목록을 생성하여 반환한다. * * @return PluginCollection */ public function getAllPlugins($refresh = false) { if ($refresh === true) { $this->plugins->initialize(true); // 각 플러그인의 설치된 버전과 실제버전이 다르고, 별도의 install이나 update가 필요없을 경우, 설치된 버전정보를 갱신한다. foreach ($this->plugins->getList() as $plugin) { /** @var PluginEntity $plugin */ $installedVersion = $plugin->getInstalledVersion(); $sourceVersion = $plugin->getVersion(); if ($sourceVersion !== $installedVersion) { if ($plugin->checkInstalled($installedVersion) && $plugin->checkUpdated($installedVersion)) { $this->setPluginStatus($plugin->getId(), ['version' => $sourceVersion, 'status' => $plugin->getStatus()]); $plugin->setInstalledVersion($sourceVersion); } } } } return $this->plugins; }