46 lines
1.2 KiB
PHP
46 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace RomhackPlaza\Master\Service\Discord;
|
|
|
|
use XF\Service\AbstractService;
|
|
|
|
class BotService extends AbstractService
|
|
{
|
|
protected ?string $dbPath;
|
|
protected ?\PDO $pdo = null;
|
|
|
|
protected function setup()
|
|
{
|
|
$this->dbPath = \XF::config('discord_db_path') ?? null;
|
|
}
|
|
|
|
protected function getDb(): ?\PDO
|
|
{
|
|
if (!$this->pdo && $this->dbPath) {
|
|
$this->pdo = new \PDO("sqlite:" . $this->dbPath);
|
|
$this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
|
|
$this->pdo->exec('PRAGMA journal_mode=WAL;');
|
|
$this->pdo->exec('PRAGMA busy_timeout=5000;');
|
|
}
|
|
return $this->pdo;
|
|
}
|
|
|
|
public function createAction( string $action, array $data ): bool
|
|
{
|
|
try {
|
|
$db = $this->getDb();
|
|
if( !$db )
|
|
return false;
|
|
|
|
$stmt = $db->prepare("INSERT INTO actions (action, data) VALUES (:action, :data)");
|
|
return $stmt->execute([
|
|
':action' => $action,
|
|
':data' => json_encode($data)
|
|
]);
|
|
|
|
} catch (\PDOException $e) {
|
|
\XF::logException($e, messagePrefix: "BotService error: ");
|
|
return false;
|
|
}
|
|
}
|
|
} |