Eccube\Service\PluginService::registerPlugin PHP Метод

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

public registerPlugin ( $meta, $event_yml, $source )
    public function registerPlugin($meta, $event_yml, $source = 0)
    {
        $em = $this->app['orm.em'];
        $em->getConnection()->beginTransaction();
        try {
            $p = new \Eccube\Entity\Plugin();
            // インストール直後はプラグインは有効にしない
            $p->setName($meta['name'])->setEnable(Constant::DISABLED)->setClassName(isset($meta['event']) ? $meta['event'] : '')->setVersion($meta['version'])->setDelflg(Constant::DISABLED)->setSource($source)->setCode($meta['code']);
            $em->persist($p);
            $em->flush();
            if (is_array($event_yml)) {
                foreach ($event_yml as $event => $handlers) {
                    foreach ($handlers as $handler) {
                        if (!$this->checkSymbolName($handler[0])) {
                            throw new PluginException('Handler name format error');
                        }
                        $peh = new \Eccube\Entity\PluginEventHandler();
                        $peh->setPlugin($p)->setEvent($event)->setdelFlg(Constant::DISABLED)->setHandler($handler[0])->setHandlerType($handler[1])->setPriority($this->app['eccube.repository.plugin_event_handler']->calcNewPriority($event, $handler[1]));
                        $em->persist($peh);
                        $em->flush();
                    }
                }
            }
            $em->persist($p);
            $this->callPluginManagerMethod($meta, 'install');
            $em->flush();
            $em->getConnection()->commit();
        } catch (\Exception $e) {
            $em->getConnection()->rollback();
            throw new PluginException($e->getMessage());
        }
        return $p;
    }