]> git.mxchange.org Git - friendica-addons.git/commitdiff
Introduce interface for emailing and create email classes
authornupplaPhil <admin@philipp.info>
Sun, 26 Jan 2020 19:23:58 +0000 (20:23 +0100)
committernupplaPhil <admin@philipp.info>
Sun, 26 Jan 2020 19:23:58 +0000 (20:23 +0100)
notifyall/NotifyAllEMail.php [new file with mode: 0644]
notifyall/notifyall.php
securemail/SecureTestEMail.php [new file with mode: 0644]
securemail/securemail.php

diff --git a/notifyall/NotifyAllEMail.php b/notifyall/NotifyAllEMail.php
new file mode 100644 (file)
index 0000000..eeca4fa
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+
+namespace Friendica\Addon\notifyall;
+
+use Friendica\App\BaseURL;
+use Friendica\Content\Text\BBCode;
+use Friendica\Core\Config\IConfig;
+use Friendica\Core\L10n;
+use Friendica\Object\EMail;
+
+/**
+ * Class for creating a Notify-All EMail
+ */
+class NotifyAllEMail extends EMail
+{
+       public function __construct(L10n $l10n, IConfig $config, BaseURL $baseUrl, string $text)
+       {
+               $sitename = $config->get('config', 'sitename');
+
+               if (empty($config->get('config', 'admin_name'))) {
+                       $sender_name = '"' . $l10n->t('%s Administrator', $sitename) . '"';
+               } else {
+                       $sender_name = '"' . $l10n->t('%1$s, %2$s Administrator', $config->get('config', 'admin_name'), $sitename) . '"';
+               }
+
+               if (!$config->get('config', 'sender_email')) {
+                       $sender_email = 'noreply@' . $baseUrl->getHostname();
+               } else {
+                       $sender_email = $config->get('config', 'sender_email');
+               }
+
+               $subject = $_REQUEST['subject'];
+
+               $textversion = strip_tags(html_entity_decode(BBCode::convert(stripslashes(str_replace(["\\r", "\\n"], ["", "\n"], $text))), ENT_QUOTES, 'UTF-8'));
+
+               $htmlversion = BBCode::convert(stripslashes(str_replace(["\\r", "\\n"], ["", "<br />\n"], $text)));
+
+               parent::__construct($sender_name, $sender_email, $sender_email, '', $subject, $htmlversion, $textversion);
+       }
+}
index 2190a9d17437161ac4f52ca96e408b3b9ec09f2a..c2391fcc03f304688edd93d5641046cda677cfda 100644 (file)
@@ -8,12 +8,12 @@
  * Author: Rabuzarus <https://friendica.kommune4.de/profile/rabuzarus> (Port to Friendica)
  */
 
+use Friendica\Addon\notifyall\NotifyAllEMail;
 use Friendica\App;
-use Friendica\Content\Text\BBCode;
+use Friendica\Database\DBA;
 use Friendica\Core\Logger;
 use Friendica\Core\Renderer;
 use Friendica\DI;
-use Friendica\Util\Emailer;
 
 function notifyall_install()
 {
@@ -45,27 +45,6 @@ function notifyall_post(App $a)
                return;
        }
 
-       $sitename = DI::config()->get('config', 'sitename');
-
-       if (empty(DI::config()->get('config', 'admin_name'))) {
-               $sender_name = '"' . DI::l10n()->t('%s Administrator', $sitename) . '"';
-       } else {
-               $sender_name = '"' . DI::l10n()->t('%1$s, %2$s Administrator', DI::config()->get('config', 'admin_name'), $sitename) . '"';
-       }
-
-       if (!DI::config()->get('config', 'sender_email')) {
-               $sender_email = 'noreply@' . DI::baseUrl()->getHostname();
-       } else {
-               $sender_email = DI::config()->get('config', 'sender_email');
-       }
-
-       $subject = $_REQUEST['subject'];
-
-
-       $textversion = strip_tags(html_entity_decode(BBCode::convert(stripslashes(str_replace(["\\r", "\\n"], ["", "\n"], $text))), ENT_QUOTES, 'UTF-8'));
-
-       $htmlversion = BBCode::convert(stripslashes(str_replace(["\\r", "\\n"], ["", "<br />\n"], $text)));
-
        // if this is a test, send it only to the admin(s)
        // admin_email might be a comma separated list, but we need "a@b','c@d','e@f
        if (intval($_REQUEST['test'])) {
@@ -74,15 +53,17 @@ function notifyall_post(App $a)
        }
        $sql_extra = ((intval($_REQUEST['test'])) ? sprintf(" AND `email` in ( %s )", $email) : '');
 
-       $recips = q("SELECT DISTINCT `email` FROM `user` WHERE `verified` AND NOT `account_removed` AND NOT `account_expired` $sql_extra");
+       $recipients = DBA::p("SELECT DISTINCT `email` FROM `user` WHERE `verified` AND NOT `account_removed` AND NOT `account_expired` $sql_extra");
 
-       if (! $recips) {
+       if (! $recipients) {
                notice(DI::l10n()->t('No recipients found.') . EOL);
                return;
        }
 
-       foreach ($recips as $recip) {
-               DI::emailer()->send($sender_name, $sender_email, $sender_email, $recip['email'], $subject, $htmlversion, $textversion);
+       $notifyEmail = new NotifyAllEMail(DI::l10n(), DI::config(), DI::baseUrl(), $text);
+
+       foreach ($recipients as $recipient) {
+               DI::emailer()->send($notifyEmail->withRecipient($recipient['email']));
        }
 
        notice(DI::l10n()->t('Emails sent'));
@@ -92,7 +73,7 @@ function notifyall_post(App $a)
 function notifyall_content(&$a)
 {
        if (! is_site_admin()) {
-               return;
+               return '';
        }
 
        $title = DI::l10n()->t('Send email to all members of this Friendica instance.');
diff --git a/securemail/SecureTestEMail.php b/securemail/SecureTestEMail.php
new file mode 100644 (file)
index 0000000..d7f9a29
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+
+namespace Friendica\Addon\securemail;
+
+use Friendica\App;
+use Friendica\App\BaseURL;
+use Friendica\Core\Config\IConfig;
+use Friendica\Core\PConfig\IPConfig;
+use Friendica\Object\EMail;
+
+/**
+ * Class for creating a Test email for the securemail addon
+ */
+class SecureTestEMail extends EMail
+{
+       public function __construct(App $a, IConfig $config, IPConfig $pConfig, BaseURL $baseUrl)
+       {
+               $sitename = $config->get('config', 'sitename');
+
+               $hostname = $baseUrl->getHostname();
+               if (strpos($hostname, ':')) {
+                       $hostname = substr($hostname, 0, strpos($hostname, ':'));
+               }
+
+               $sender_email = $config->get('config', 'sender_email');
+               if (empty($sender_email)) {
+                       $sender_email = 'noreply@' . $hostname;
+               }
+
+               $subject = 'Friendica - Secure Mail - Test';
+               $message = 'This is a test message from your Friendica Secure Mail addon.';
+
+               // enable addon for test
+               $pConfig->set(local_user(), 'securemail', 'enable', 1);
+
+               parent::__construct($sitename, $sender_email, $sender_email, $a->user['email'],
+                       $subject, "<p>{$message}</p>", $message,
+                       '', local_user());
+       }
+}
index 1f7cd7686dc6e53d6a45351c24367a4c13b7204e..e25e96695c05b5cc6864aa5a23a6a5fd4869d9b2 100644 (file)
@@ -6,12 +6,12 @@
  * Author: Fabio Comuni <http://kirgroup.com/profile/fabrixxm>
  */
 
+use Friendica\Addon\securemail\SecureTestEMail;
 use Friendica\App;
 use Friendica\Core\Hook;
 use Friendica\Core\Logger;
 use Friendica\Core\Renderer;
 use Friendica\DI;
-use Friendica\Util\Emailer;
 
 require_once __DIR__ . '/vendor/autoload.php';
 
@@ -88,27 +88,8 @@ function securemail_settings_post(App &$a, array &$b)
                info(DI::l10n()->t('Secure Mail Settings saved.') . EOL);
 
                if ($_POST['securemail-submit'] == DI::l10n()->t('Save and send test')) {
-                       $sitename = DI::config()->get('config', 'sitename');
 
-                       $hostname = DI::baseUrl()->getHostname();
-                       if (strpos($hostname, ':')) {
-                               $hostname = substr($hostname, 0, strpos($hostname, ':'));
-                       }
-
-                       $sender_email = DI::config()->get('config', 'sender_email');
-                       if (empty($sender_email)) {
-                               $sender_email = 'noreply@' . $hostname;
-                       }
-
-                       $subject = 'Friendica - Secure Mail - Test';
-                       $message = 'This is a test message from your Friendica Secure Mail addon.';
-
-                       // enable addon for test
-                       DI::pConfig()->set(local_user(), 'securemail', 'enable', 1);
-
-                       $res = DI::emailer()->send($sitename, $sender_email, $sender_email,
-                               $a->user['email'], $subject, "<p>{$message}</p>", $message,
-                               '', local_user());
+                       $res = DI::emailer()->send(new SecureTestEMail(DI::app(), DI::config(), DI::pConfig(), DI::baseUrl()));
 
                        // revert to saved value
                        DI::pConfig()->set(local_user(), 'securemail', 'enable', $enable);