Skip to content

Commit

Permalink
Merge pull request #53 from Parabot/development
Browse files Browse the repository at this point in the history
[MERGE] Development into master
  • Loading branch information
JKetelaar authored Nov 9, 2017
2 parents c62a640 + 04cec89 commit b54fe3e
Show file tree
Hide file tree
Showing 7 changed files with 129 additions and 163 deletions.
42 changes: 42 additions & 0 deletions app/Migrations/Version20171109213351.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?php

namespace BDN\Migrations;

use Doctrine\DBAL\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;

/**
* Auto-generated Migration: Please modify to your needs!
*/
class Version20171109213351 extends AbstractMigration
{
/**
* @param Schema $schema
*/
public function up(Schema $schema)
{
// this up() migration is auto-generated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');

$this->addSql('ALTER TABLE server DROP FOREIGN KEY FK_5A6DD5F61844E6B7');
$this->addSql('CREATE TABLE type_soulplay_provider (id INT AUTO_INCREMENT NOT NULL, version VARCHAR(255) NOT NULL, release_date DATETIME NOT NULL, branch VARCHAR(255) NOT NULL, stable TINYINT(1) NOT NULL, build_id INT NOT NULL, active TINYINT(1) DEFAULT \'1\' NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB');
$this->addSql('DROP TABLE server_slack_channel');
$this->addSql('DROP INDEX UNIQ_5A6DD5F61844E6B7 ON server');
$this->addSql('ALTER TABLE server DROP server_id');
}

/**
* @param Schema $schema
*/
public function down(Schema $schema)
{
// this down() migration is auto-generated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');

$this->addSql('CREATE TABLE server_slack_channel (id INT AUTO_INCREMENT NOT NULL, channel VARCHAR(255) NOT NULL COLLATE utf8_unicode_ci, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB');
$this->addSql('DROP TABLE type_soulplay_provider');
$this->addSql('ALTER TABLE server ADD server_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE server ADD CONSTRAINT FK_5A6DD5F61844E6B7 FOREIGN KEY (server_id) REFERENCES server_slack_channel (id)');
$this->addSql('CREATE UNIQUE INDEX UNIQ_5A6DD5F61844E6B7 ON server (server_id)');
}
}
5 changes: 5 additions & 0 deletions src/Parabot/BDN/BotBundle/Controller/BotController.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,11 @@ public function downloadProviderAction(Request $request) {
$this->generateUrl('bot_download', [ 'type' => 'locopk-provider', 'nightly' => $nightly ]),
301
);
case 'SoulPlay':
return $this->redirect(
$this->generateUrl('bot_download', [ 'type' => 'soulplay-provider', 'nightly' => $nightly ]),
301
);
default:
return $this->redirect(
$this->generateUrl('bot_download', [ 'type' => 'default-provider', 'nightly' => $nightly ]),
Expand Down
106 changes: 36 additions & 70 deletions src/Parabot/BDN/BotBundle/Controller/ServerController.php
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,17 @@ public function insertServerAction(Request $request) {
$this->getDoctrine()->getManager()->persist($server);
$this->getDoctrine()->getManager()->flush();

$slack = $server->getDetail('slack');
if($slack != null) {
$this->get('slack_manager')->sendSuccessMessage(
'Server updated',
$server->getName() . ' has been added!',
null,
[ 'Version' => $server->getVersion(), 'Description' => $server->getDescription() ],
$slack->getValue()
);
}

return $response->setData([ 'result' => 'Server inserted' ]);
}

Expand All @@ -236,7 +247,6 @@ public function insertServerAction(Request $request) {
* @Route("/insert", name="insert_server")
* @Method({"POST"})
*
* @PreAuthorize("isAdministrator()")
*
* @param Request $request
*
Expand All @@ -252,7 +262,18 @@ public function insertServer(Request $request) {
if($server->guessExtension() == 'zip' || $server->guessExtension() == 'jar') {
$serverObject->insertFile($server);

return new JsonResponse([ 'result' => 'Server added' ]);
$slack = $serverObject->getDetail('slack');
if($slack != null) {
$this->get('slack_manager')->sendSuccessMessage(
'Server updated',
'Client for server ' . $serverObject->getName() . ' has been updated!',
null,
[ 'Server' => $serverObject->getName(), 'Version' => $serverObject->getVersion() ],
$slack->getValue()
);
}

return new JsonResponse([ 'result' => 'Server uploaded' ]);
} else {
return new JsonResponse([ 'result' => 'Upload may only be a jar' ], 400);
}
Expand Down Expand Up @@ -467,7 +488,6 @@ public function updateServerAction(Request $request) {
$this->getDoctrine()->getManager()->flush();

$response->setData([ 'result' => 'Server saved!' ]);

} else {
$response->setData([ 'result' => 'Could not find server' ]);
$response->setStatusCode(404);
Expand Down Expand Up @@ -610,6 +630,17 @@ public function hooksFileToDatabaseAction(Request $request) {

$this->getDoctrine()->getManager()->flush();

$slack = $server->getDetail('slack');
if($slack != null) {
$this->get('slack_manager')->sendSuccessMessage(
'Server updated',
'Hooks for ' . $server->getName() . ' have been updated!',
null,
[ 'Server' => $server->getName(), 'Amount of hooks' => count($hooks) ],
$slack->getValue()
);
}

$response->setData([ 'result' => 'Hooks inserted' ]);
} else {
$response->setData(
Expand Down Expand Up @@ -855,9 +886,9 @@ public function getSlackChannel(Request $request, $id) {
if($id != null) {
$serverObject = $this->getDoctrine()->getRepository('BDNBotBundle:Servers\Server')->findById($id);
if($serverObject != null) {
$slack = $serverObject->getSlackChannel();
$slack = $serverObject->getDetail('slack');
if($slack != null) {
return new JsonResponse($slack);
return new JsonResponse([ 'result' => $slack->getValue() ]);
} else {
return new JsonResponse([ 'result' => 'Could not find Slack channel for requested server' ], 404);
}
Expand All @@ -868,69 +899,4 @@ public function getSlackChannel(Request $request, $id) {
return new JsonResponse([ 'result' => 'Missing server ID' ], 400);
}
}

/**
* @ApiDoc(
* description="Sets the Slack channel for the server",
* requirements={
* {
* "name"="id",
* "dataType"="string",
* "description"="ID of the server"
* },
* {
* "name"="name",
* "dataType"="string",
* "description"="Name of the channel"
* }
* },
* parameters={
* }
* )
*
* @Route("/slack/{id}", name="set_server_slack_channel")
* @Method({"POST"})
*
* @PreAuthorize("isServerDeveloper()")
*
* @param Request $request
*
* @return JsonResponse
*/
public function setSlackChannel(Request $request, $id) {
if($id != null) {
$serverObject = $this->getDoctrine()->getRepository('BDNBotBundle:Servers\Server')->findById($id);
if($serverObject != null) {
/**
* @var ServerSlackChannel $slack
*/
$slack = $serverObject->getSlackChannel();
if($slack != null && ! $this->get(
'parabot.b_d_n.user_bundle.security.request_access_evaluator'
)->isAdministrator()) {
return new JsonResponse([ 'result' => 'Slack channel already set' ], 404);
} else {
if(($channel = $request->get('channel')) != null) {
if($slack != null && $this->get(
'parabot.b_d_n.user_bundle.security.request_access_evaluator'
)->isAdministrator()) {
$slack->setChannel($channel);
} else {
$slack = new ServerSlackChannel($serverObject, $channel);
}

$this->getDoctrine()->getManager()->persist($slack);
$this->getDoctrine()->getManager()->flush();
} else {
return new JsonResponse([ 'result' => 'Missing channel' ]);
}
}

} else {
return new JsonResponse([ 'result' => 'Could not find server with ID' ], 404);
}
} else {
return new JsonResponse([ 'result' => 'Missing server ID' ], 400);
}
}
}
34 changes: 16 additions & 18 deletions src/Parabot/BDN/BotBundle/Entity/Servers/Server.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
use Doctrine\ORM\Mapping\JoinTable;
use Doctrine\ORM\Mapping\ManyToMany;
use Doctrine\ORM\Mapping\OneToMany;
use Parabot\BDN\BotBundle\Entity\Types\Provider;
use Parabot\BDN\BotBundle\Entity\Types\Providers\Provider;
use Parabot\BDN\UserBundle\Entity\Group;
use Parabot\BDN\UserBundle\Entity\User;
use Symfony\Component\Config\Definition\Exception\Exception;
Expand Down Expand Up @@ -120,16 +120,6 @@ class Server {
*/
private $provider;

/**
* @var User
*
* @ORM\OneToOne(targetEntity="Parabot\BDN\BotBundle\Entity\Servers\ServerSlackChannel", inversedBy="server")
* @ORM\JoinColumn(name="server_id", referencedColumnName="id")
*
* @Groups({"default"})
*/
private $slackChannel;

/**
* @return Hook[]
*/
Expand Down Expand Up @@ -322,6 +312,21 @@ public function getDetails() {
return $this->details;
}

/**
* @param string $key
*
* @return ServerDetail|null
*/
public function getDetail($key){
foreach ($this->details as $detail){
if ($detail->getName() == $key){
return $detail;
}
}

return null;
}

/**
* @param ServerDetail[] $details
*
Expand Down Expand Up @@ -390,11 +395,4 @@ public function insertFile(File $file) {
public function getProvider() {
return $this->provider;
}

/**
* @return User
*/
public function getSlackChannel() {
return $this->slackChannel;
}
}
75 changes: 0 additions & 75 deletions src/Parabot/BDN/BotBundle/Entity/Servers/ServerSlackChannel.php

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?php
/**
* @author JKetelaar
*/

namespace Parabot\BDN\BotBundle\Entity\Types\Providers;

use Doctrine\ORM\Mapping as ORM;

/**
* Class SoulPlayProvider
* @package Parabot\BDN\BotBundle\Entity\Types\Providers
*
* @ORM\Table(name="type_soulplay_provider")
* @ORM\Entity(repositoryClass="Parabot\BDN\BotBundle\Repository\ProviderRepository")
*/
class SoulPlayProvider extends Provider {
public function getType() {
return 'SoulPlay-Provider';
}

public function getTravisRepository() {
return 'Parabot/Parabot-317-API-Minified-SoulPlay';
}

public function getName() {
return 'SoulPlay-Provider';
}
}
1 change: 1 addition & 0 deletions src/Parabot/BDN/BotBundle/Service/TypeHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class TypeHelper {
'pkhonor-provider' => 'BDNBotBundle:Types\Providers\PkHonorProvider',
'dreamscape-provider' => 'BDNBotBundle:Types\Providers\DreamScapeProvider',
'locopk-provider' => 'BDNBotBundle:Types\Providers\LocoPKProvider',
'soulplay-provider' => 'BDNBotBundle:Types\Providers\SoulPlayProvider',
];

private $entityManager;
Expand Down

0 comments on commit b54fe3e

Please # to comment.