Exemplo n.º 1
0
 /**
  * Install a $plugin on $server
  *
  * @param GameServer $server
  * @param Plugin $plugin
  * @return GameServer|null
  */
 public function installPlugin(GameServer $server, Plugin $plugin)
 {
     /** @var ResourceEvent $event */
     $event = $this->dispatchEvent('pre_install_plugin', new ResourceEvent($server, array('plugin' => $plugin)));
     if ($event->isStopped()) {
         $this->flashHelper->setFlash($event->getMessageType(), $event->getMessage(), $event->getMessageParameters());
         return null;
     }
     try {
         $server->installPlugin($this->templating, $plugin);
         $server->addPlugin($plugin);
     } catch (MissingPacketException $e) {
         $this->flashHelper->setFlash(ResourceEvent::TYPE_ERROR, 'dedipanel.game.missingPacket', array('%plugin%' => strval($plugin), '%packet%' => $e->getPackets()));
         return null;
     } catch (NotImplementedException $e) {
         $this->flashHelper->setFlash(ResourceEvent::TYPE_ERROR, 'dedipanel.game.cant_install_plugin');
         return null;
     } catch (ConnectionErrorException $e) {
         $this->flashHelper->setFlash(ResourceEvent::TYPE_ERROR, 'dedipanel.machine.connection_failed');
         return null;
     }
     $this->manager->persist($server);
     $this->manager->flush();
     $this->flashHelper->setFlash(ResourceEvent::TYPE_SUCCESS, 'dedipanel.flashes.install_plugin');
     $this->dispatchEvent('post_install_plugin', $event);
     return $server;
 }