Xpressengine\Plugin\PluginHandler::activatePlugin PHP Method

activatePlugin() public method

주어진 플러그인을 활성화한다. 활성화된 플러그인 목록은 XE에 저장된다.
public activatePlugin ( string $pluginId ) : void
$pluginId string 활성화 할 플러그인의 id
return void
    public function activatePlugin($pluginId)
    {
        $entity = $this->getPlugin($pluginId);
        // 플러그인이 존재하는지 검사한다.
        if ($entity === null) {
            throw new PluginNotFoundException(['pluginName' => $pluginId]);
        }
        // 플러그인이 이미 활성화되어있는 상태인지 체크한다.
        if ($entity->getStatus() === static::STATUS_ACTIVATED) {
            throw new PluginAlreadyActivatedException();
        }
        // 기존에 설치(활성화)된 적이 있는지 검사한다. 기존에 활성화된 적이 있다면 설치된 버전을 조회한다.
        $installedVersion = $entity->getInstalledVersion();
        // 플러그인의 컴포넌트 정보를 셋팅한다
        $entity->getObject();
        $this->register->addByEntity($entity);
        $this->updatePlugin($pluginId, false);
        // 플러그인 활성화. 플러그인을 활성화할 때마다 각 플러그인의 activate() 메소드를 호출해준다.
        try {
            $entity->activate($installedVersion);
        } catch (\Exception $e) {
            throw new PluginActivationFailedException();
        }
        $entity->setStatus(static::STATUS_ACTIVATED);
        $entity->setInstalledVersion($entity->getVersion());
        // 활성화 된 플러그인의 정보를 config에 기록한다.
        $this->setPluginStatus($pluginId, ['status' => static::STATUS_ACTIVATED, 'version' => $entity->getVersion()]);
    }

Usage Example

コード例 #1
0
 /**
  * activatePlugin
  *
  * @param $pluginId
  *
  * @return void
  */
 protected function activatePlugin($pluginId)
 {
     $this->handler->getAllPlugins(true);
     if ($this->handler->isActivated($pluginId) === false) {
         $this->handler->activatePlugin($pluginId);
     }
 }
All Usage Examples Of Xpressengine\Plugin\PluginHandler::activatePlugin