Skip to content
Snippets Groups Projects
Unverified Commit 0c37e890 authored by Roeland Jago Douma's avatar Roeland Jago Douma
Browse files

Move the Alias/AliasMapper to the QBMapper


Properly use the query builder.
Typehinting
Strict

Signed-off-by: default avatarRoeland Jago Douma <roeland@famdouma.nl>
parent 54bd9747
No related branches found
No related tags found
No related merge requests found
<?php
declare(strict_types=1);
/**
* @author Jakob Sack <mail@jakobsack.de>
......@@ -33,8 +34,18 @@ use OCP\AppFramework\Db\Entity;
*/
class Alias extends Entity {
public $accountId;
public $name;
public $alias;
/** @var int */
protected $accountId;
/** @var string */
protected $name;
/** @var string */
protected $alias;
public function __construct() {
$this->addType('accountId', 'int');
$this->addType('name', 'string');
$this->addType('alias', 'string');
}
}
<?php
declare(strict_types=1);
/**
* Mail
......@@ -12,10 +13,10 @@
namespace OCA\Mail\Db;
use OCP\AppFramework\Db\Mapper;
use OCP\AppFramework\Db\QBMapper;
use OCP\IDBConnection;
class AliasMapper extends Mapper {
class AliasMapper extends QBMapper {
/**
* @param IDBConnection $db
......@@ -29,9 +30,19 @@ class AliasMapper extends Mapper {
* @param string $currentUserId
* @return Alias
*/
public function find($aliasId, $currentUserId) {
$sql = 'select *PREFIX*mail_aliases.* from *PREFIX*mail_aliases join *PREFIX*mail_accounts on *PREFIX*mail_aliases.account_id = *PREFIX*mail_accounts.id where *PREFIX*mail_accounts.user_id = ? and *PREFIX*mail_aliases.id=?';
return $this->findEntity($sql, [$currentUserId, $aliasId]);
public function find(int $aliasId, string $currentUserId): Alias {
$qb = $this->db->getQueryBuilder();
$qb->select('aliases.*')
->from($this->getTableName(), 'aliases')
->join('aliases', 'mail_accounts', 'accounts', $qb->expr()->eq('aliases.account_id', 'accounts.id'))
->where(
$qb->expr()->andX(
$qb->expr()->eq('accounts.user_id', $qb->createNamedParameter($currentUserId)),
$qb->expr()->eq('aliases.id', $qb->createNamedParameter($aliasId))
)
);
return $this->findEntity($qb);
}
/**
......@@ -39,12 +50,18 @@ class AliasMapper extends Mapper {
* @param string $currentUserId
* @return Alias[]
*/
public function findAll($accountId, $currentUserId) {
$sql = 'select *PREFIX*mail_aliases.* from *PREFIX*mail_aliases join *PREFIX*mail_accounts on *PREFIX*mail_aliases.account_id = *PREFIX*mail_accounts.id where *PREFIX*mail_accounts.user_id = ? AND *PREFIX*mail_aliases.account_id=?';
$params = [
$currentUserId,
$accountId
];
return $this->findEntities($sql, $params);
public function findAll(int $accountId, string $currentUserId): array {
$qb = $this->db->getQueryBuilder();
$qb->select('aliases.*')
->from($this->getTableName(), 'aliases')
->join('aliases', 'mail_accounts', 'accounts', $qb->expr()->eq('aliases.account_id', 'accounts.id'))
->where(
$qb->expr()->andX(
$qb->expr()->eq('accounts.user_id', $qb->createNamedParameter($currentUserId)),
$qb->expr()->eq('aliases.account_id', $qb->createNamedParameter($accountId))
)
);
return $this->findEntities($qb);
}
}
......@@ -101,7 +101,7 @@ class MailTransmission implements IMailTransmission {
$message = $this->buildNewMessage($account, $messageData);
}
$fromEmail = $alias ? $alias->alias : $account->getEMailAddress();
$fromEmail = $alias ? $alias->getAlias() : $account->getEMailAddress();
$from = new AddressList([
new Address($account->getName(), $fromEmail),
]);
......
......@@ -176,8 +176,8 @@ class MailTransmissionTest extends TestCase {
public function testSendMessageFromAlias() {
$account = $this->createMock(Account::class);
$alias = $this->createMock(Alias::class);
$alias->alias = 'a@d.com';
$alias = new Alias();
$alias->setAlias('a@d.com');
$messageData = NewMessageData::fromRequest($account, 'to@d.com', '', '', 'sub', 'bod');
$replyData = new RepliedMessageData($account, null, null);
$message = $this->createMock(IMessage::class);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment