diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php index 24de84a069..1d1cd97b6d 100644 --- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php +++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php @@ -32,7 +32,7 @@ namespace OCA\Provisioning_API\Tests\Controller; use Exception; use OC\Accounts\AccountManager; use OC\Group\Manager; -use OC\Mail\IEMailTemplate; +use OCP\Mail\IEMailTemplate; use OC\Settings\Mailer\NewUserMailHelper; use OC\SubAdmin; use OCA\Provisioning_API\Controller\UsersController; diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index fd73a9561a..c80881262d 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -211,6 +211,7 @@ return array( 'OCP\\Lock\\ILockingProvider' => $baseDir . '/lib/public/Lock/ILockingProvider.php', 'OCP\\Lock\\LockedException' => $baseDir . '/lib/public/Lock/LockedException.php', 'OCP\\Lockdown\\ILockdownManager' => $baseDir . '/lib/public/Lockdown/ILockdownManager.php', + 'OCP\\Mail\\IEMailTemplate' => $baseDir . '/lib/public/Mail/IEMailTemplate.php', 'OCP\\Mail\\IMailer' => $baseDir . '/lib/public/Mail/IMailer.php', 'OCP\\Migration\\IOutput' => $baseDir . '/lib/public/Migration/IOutput.php', 'OCP\\Migration\\IRepairStep' => $baseDir . '/lib/public/Migration/IRepairStep.php', @@ -638,7 +639,6 @@ return array( 'OC\\Log\\Rotate' => $baseDir . '/lib/private/Log/Rotate.php', 'OC\\Log\\Syslog' => $baseDir . '/lib/private/Log/Syslog.php', 'OC\\Mail\\EMailTemplate' => $baseDir . '/lib/private/Mail/EMailTemplate.php', - 'OC\\Mail\\IEMailTemplate' => $baseDir . '/lib/private/Mail/IEMailTemplate.php', 'OC\\Mail\\Mailer' => $baseDir . '/lib/private/Mail/Mailer.php', 'OC\\Mail\\Message' => $baseDir . '/lib/private/Mail/Message.php', 'OC\\Memcache\\APCu' => $baseDir . '/lib/private/Memcache/APCu.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index 9fe795cfb0..8955d2de6c 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -241,6 +241,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OCP\\Lock\\ILockingProvider' => __DIR__ . '/../../..' . '/lib/public/Lock/ILockingProvider.php', 'OCP\\Lock\\LockedException' => __DIR__ . '/../../..' . '/lib/public/Lock/LockedException.php', 'OCP\\Lockdown\\ILockdownManager' => __DIR__ . '/../../..' . '/lib/public/Lockdown/ILockdownManager.php', + 'OCP\\Mail\\IEMailTemplate' => __DIR__ . '/../../..' . '/lib/public/Mail/IEMailTemplate.php', 'OCP\\Mail\\IMailer' => __DIR__ . '/../../..' . '/lib/public/Mail/IMailer.php', 'OCP\\Migration\\IOutput' => __DIR__ . '/../../..' . '/lib/public/Migration/IOutput.php', 'OCP\\Migration\\IRepairStep' => __DIR__ . '/../../..' . '/lib/public/Migration/IRepairStep.php', @@ -668,7 +669,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OC\\Log\\Rotate' => __DIR__ . '/../../..' . '/lib/private/Log/Rotate.php', 'OC\\Log\\Syslog' => __DIR__ . '/../../..' . '/lib/private/Log/Syslog.php', 'OC\\Mail\\EMailTemplate' => __DIR__ . '/../../..' . '/lib/private/Mail/EMailTemplate.php', - 'OC\\Mail\\IEMailTemplate' => __DIR__ . '/../../..' . '/lib/private/Mail/IEMailTemplate.php', 'OC\\Mail\\Mailer' => __DIR__ . '/../../..' . '/lib/private/Mail/Mailer.php', 'OC\\Mail\\Message' => __DIR__ . '/../../..' . '/lib/private/Mail/Message.php', 'OC\\Memcache\\APCu' => __DIR__ . '/../../..' . '/lib/private/Memcache/APCu.php', diff --git a/lib/private/Mail/EMailTemplate.php b/lib/private/Mail/EMailTemplate.php index c84af6331d..402916cf74 100644 --- a/lib/private/Mail/EMailTemplate.php +++ b/lib/private/Mail/EMailTemplate.php @@ -28,6 +28,7 @@ namespace OC\Mail; use OCP\Defaults; use OCP\IL10N; use OCP\IURLGenerator; +use OCP\Mail\IEMailTemplate; /** * Class EMailTemplate diff --git a/lib/private/Mail/Mailer.php b/lib/private/Mail/Mailer.php index 8a6b6fce89..852806b2e4 100644 --- a/lib/private/Mail/Mailer.php +++ b/lib/private/Mail/Mailer.php @@ -24,6 +24,8 @@ namespace OC\Mail; use OCP\Defaults; use OCP\IConfig; +use OCP\IL10N; +use OCP\IURLGenerator; use OCP\Mail\IMailer; use OCP\ILogger; @@ -54,18 +56,28 @@ class Mailer implements IMailer { private $logger; /** @var Defaults */ private $defaults; + /** @var IURLGenerator */ + private $urlGenerator; + /** @var IL10N */ + private $l10n; /** * @param IConfig $config * @param ILogger $logger * @param Defaults $defaults + * @param IURLGenerator $urlGenerator + * @param IL10N $l10n */ - function __construct(IConfig $config, + public function __construct(IConfig $config, ILogger $logger, - Defaults $defaults) { + Defaults $defaults, + IURLGenerator $urlGenerator, + IL10N $l10n) { $this->config = $config; $this->logger = $logger; $this->defaults = $defaults; + $this->urlGenerator = $urlGenerator; + $this->l10n = $l10n; } /** @@ -77,6 +89,14 @@ class Mailer implements IMailer { return new Message(new \Swift_Message()); } + public function createEMailTemplate() { + return new EMailTemplate( + $this->defaults, + $this->urlGenerator, + $this->l10n + ); + } + /** * Send the specified message. Also sets the from address to the value defined in config.php * if no-one has been passed. diff --git a/lib/private/Server.php b/lib/private/Server.php index 9b2380ac7a..011263cd2d 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -727,7 +727,9 @@ class Server extends ServerContainer implements IServerContainer { return new Mailer( $c->getConfig(), $c->getLogger(), - $c->query(Defaults::class) + $c->query(Defaults::class), + $c->getURLGenerator(), + $c->getL10N('lib') ); }); $this->registerAlias('Mailer', \OCP\Mail\IMailer::class); diff --git a/lib/private/Mail/IEMailTemplate.php b/lib/public/Mail/IEMailTemplate.php similarity index 90% rename from lib/private/Mail/IEMailTemplate.php rename to lib/public/Mail/IEMailTemplate.php index baa2973598..bcb53f610e 100644 --- a/lib/private/Mail/IEMailTemplate.php +++ b/lib/public/Mail/IEMailTemplate.php @@ -21,9 +21,7 @@ * */ -namespace OC\Mail; - -use OCP\Defaults; +namespace OCP\Mail; /** * Interface IEMailTemplate @@ -49,19 +47,14 @@ use OCP\Defaults; * * $htmlContent = $emailTemplate->renderHTML(); * $plainContent = $emailTemplate->renderText(); + * + * @since 12.0.0 */ interface IEMailTemplate { - /** - * @param Defaults $themingDefaults - * @param \OCP\IURLGenerator $urlGenerator - * @param \OCP\IL10N $l10n - */ - public function __construct(Defaults $themingDefaults, - \OCP\IURLGenerator $urlGenerator, - \OCP\IL10N $l10n); - /** * Adds a header to the email + * + * @since 12.0.0 */ public function addHeader(); @@ -69,6 +62,8 @@ interface IEMailTemplate { * Adds a heading to the email * * @param string $title + * + * @since 12.0.0 */ public function addHeading($title); @@ -76,6 +71,8 @@ interface IEMailTemplate { * Adds a paragraph to the body of the email * * @param string $text + * + * @since 12.0.0 */ public function addBodyText($text); @@ -86,6 +83,8 @@ interface IEMailTemplate { * @param string $urlLeft URL of left button * @param string $textRight Text of right button * @param string $urlRight URL of right button + * + * @since 12.0.0 */ public function addBodyButtonGroup($textLeft, $urlLeft, $textRight, $urlRight); @@ -93,6 +92,8 @@ interface IEMailTemplate { * Adds a logo and a text to the footer.
in the text will be replaced by new lines in the plain text email * * @param string $text + * + * @since 12.0.0 */ public function addFooter($text = ''); @@ -100,6 +101,8 @@ interface IEMailTemplate { * Returns the rendered HTML email as string * * @return string + * + * @since 12.0.0 */ public function renderHTML(); @@ -107,6 +110,8 @@ interface IEMailTemplate { * Returns the rendered plain text email as string * * @return string + * + * @since 12.0.0 */ public function renderText(); } diff --git a/lib/public/Mail/IMailer.php b/lib/public/Mail/IMailer.php index 9ecebd2ee4..af16a8a239 100644 --- a/lib/public/Mail/IMailer.php +++ b/lib/public/Mail/IMailer.php @@ -54,6 +54,14 @@ interface IMailer { */ public function createMessage(); + /** + * Creates a new email template object + * + * @return IEMailTemplate + * @since 12.0.0 + */ + public function createEMailTemplate(); + /** * Send the specified message. Also sets the from address to the value defined in config.php * if no-one has been passed. diff --git a/settings/Mailer/NewUserMailHelper.php b/settings/Mailer/NewUserMailHelper.php index a381c32efb..75ec62e5ad 100644 --- a/settings/Mailer/NewUserMailHelper.php +++ b/settings/Mailer/NewUserMailHelper.php @@ -22,7 +22,7 @@ namespace OC\Settings\Mailer; use OC\Mail\EMailTemplate; -use OC\Mail\IEMailTemplate; +use OCP\Mail\IEMailTemplate; use OCP\AppFramework\Utility\ITimeFactory; use OCP\Defaults; use OCP\IConfig; diff --git a/tests/Settings/Mailer/NewUserMailHelperTest.php b/tests/Settings/Mailer/NewUserMailHelperTest.php index f38eed0745..ef9dae8766 100644 --- a/tests/Settings/Mailer/NewUserMailHelperTest.php +++ b/tests/Settings/Mailer/NewUserMailHelperTest.php @@ -21,7 +21,7 @@ namespace Tests\Settings\Mailer; -use OC\Mail\IEMailTemplate; +use OCP\Mail\IEMailTemplate; use OC\Mail\Message; use OC\Settings\Mailer\NewUserMailHelper; use OCP\AppFramework\Utility\ITimeFactory; diff --git a/tests/lib/Mail/MailerTest.php b/tests/lib/Mail/MailerTest.php index 02f7bdc658..a7226b9ecd 100644 --- a/tests/lib/Mail/MailerTest.php +++ b/tests/lib/Mail/MailerTest.php @@ -8,32 +8,44 @@ namespace Test\Mail; +use OC\Mail\EMailTemplate; use OC\Mail\Mailer; use OCP\Defaults; use OCP\IConfig; +use OCP\IL10N; use OCP\ILogger; +use OCP\IURLGenerator; use Test\TestCase; class MailerTest extends TestCase { - /** @var IConfig */ + /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ private $config; - /** @var Defaults */ + /** @var Defaults|\PHPUnit_Framework_MockObject_MockObject */ private $defaults; - /** @var ILogger */ + /** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */ private $logger; + /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ + private $urlGenerator; + /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ + private $l10n; /** @var Mailer */ private $mailer; - function setUp() { + public function setUp() { parent::setUp(); - $this->config = $this->getMockBuilder('\OCP\IConfig') - ->disableOriginalConstructor()->getMock(); - $this->defaults = $this->getMockBuilder('\OCP\Defaults') - ->disableOriginalConstructor()->getMock(); - $this->logger = $this->getMockBuilder('\OCP\ILogger') - ->disableOriginalConstructor()->getMock(); - $this->mailer = new Mailer($this->config, $this->logger, $this->defaults); + $this->config = $this->createMock(IConfig::class); + $this->defaults = $this->createMock(Defaults::class); + $this->logger = $this->createMock(ILogger::class); + $this->urlGenerator = $this->createMock(IURLGenerator::class); + $this->l10n = $this->createMock(IL10N::class); + $this->mailer = new Mailer( + $this->config, + $this->logger, + $this->defaults, + $this->urlGenerator, + $this->l10n + ); } public function testGetMailInstance() { @@ -120,4 +132,7 @@ class MailerTest extends TestCase { $this->assertSame($expected, $this->mailer->validateMailAddress($email)); } + public function testCreateEMailTemplate() { + $this->assertSame(EMailTemplate::class, get_class($this->mailer->createEMailTemplate())); + } }