fix: Remove bindParam usage with simpler query

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl
2024-07-02 12:29:10 +02:00
parent 6dfb01fa02
commit 19e35fdee4

View File

@@ -562,12 +562,15 @@ class CardMapper extends QBMapper implements IPermissionMapper {
} }
public function isOwner($userId, $id): bool { public function isOwner($userId, $id): bool {
$sql = 'SELECT owner FROM `*PREFIX*deck_boards` WHERE `id` IN (SELECT board_id FROM `*PREFIX*deck_stacks` WHERE id IN (SELECT stack_id FROM `*PREFIX*deck_cards` WHERE id = ?))'; $qb = $this->db->getQueryBuilder();
$stmt = $this->db->prepare($sql); $qb->select('c.id')
$stmt->bindParam(1, $id, \PDO::PARAM_INT, 0); ->from($this->getTableName(), 'c')
$stmt->execute(); ->innerJoin('c', 'deck_stacks', 's', 'c.stack_id = s.id')
$row = $stmt->fetch(); ->innerJoin('s', 'deck_boards', 'b', 'b.id = s.board_id')
return ($row['owner'] === $userId); ->where($qb->expr()->eq('c.id', $qb->createNamedParameter($id, IQueryBuilder::PARAM_INT)))
->andWhere($qb->expr()->eq('b.owner', $qb->createNamedParameter($userId, IQueryBuilder::PARAM_STR)));
return count($qb->executeQuery()->fetchAll()) > 0;
} }
public function findBoardId($id): ?int { public function findBoardId($id): ?int {