]> git.mxchange.org Git - friendica.git/commitdiff
E-Mail import: The item is now provided to the hook
authorMichael <heluecht@pirati.ca>
Sat, 23 Nov 2019 11:42:03 +0000 (11:42 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 23 Nov 2019 11:42:03 +0000 (11:42 +0000)
src/Protocol/Email.php
src/Worker/OnePoll.php

index 8e3edd78316d361877ce85adac2f6d88215683a4..76797eb6e8cc53ca7ffddb29026c8ae2c3043740 100644 (file)
@@ -6,8 +6,10 @@ namespace Friendica\Protocol;
 
 use Friendica\Core\Hook;
 use Friendica\Core\Logger;
+use Friendica\Content\Text\BBCode;
 use Friendica\Content\Text\HTML;
 use Friendica\Model\Item;
+use Friendica\Util\Strings;
 
 /**
  * @brief Email class
@@ -110,9 +112,9 @@ class Email
         * @return array
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public static function getMessage($mbox, $uid, $reply)
+       public static function getMessage($mbox, $uid, $reply, $item)
        {
-               $ret = [];
+               $ret = $item;
 
                $struc = (($mbox && $uid) ? @imap_fetchstructure($mbox, $uid, FT_UID) : null);
 
@@ -126,9 +128,13 @@ class Email
 
                        if (trim($ret['body']) == '') {
                                $ret['body'] = self::messageGetPart($mbox, $uid, $struc, 0, 'plain');
+
+                               $message = ['text' => $ret['body'], 'html' => ''];
+                               Hook::callAll('email_getmessage', $message, $ret);
+                               $ret['body'] = $message['text'];
                        } else {
                                $message = ['text' => '', 'html' => $ret['body']];
-                               Hook::callAll('email_getmessage', $message);
+                               Hook::callAll('email_getmessage', $message, $ret);
                                $ret['body'] = $message['html'];
 
                                $ret['body'] = HTML::toBBCode($ret['body']);
@@ -149,7 +155,7 @@ class Email
                        }
 
                        $message = ['text' => trim($text), 'html' => trim($html)];
-                       Hook::callAll('email_getmessage', $message);
+                       Hook::callAll('email_getmessage', $message, $ret);
                        $html = $message['html'];
                        $text = $message['text'];
 
@@ -171,6 +177,9 @@ class Email
 
                $ret['body'] = self::unifyAttributionLine($ret['body']);
 
+               $ret['body'] = Strings::escapeHtml($ret['body']);
+               $ret['body'] = BBCode::limitBodySize($ret['body']);
+
                Hook::callAll('email_getmessage_end', $ret);
 
                return $ret;
index fefe7d8020b451130d06e444c80b372734368ef7..0d1a1670acca3a3836b586a1fda1b2c71c962758 100644 (file)
@@ -494,6 +494,8 @@ class OnePoll
                                        Logger::log("Mail: Parsing mail ".$msg_uid, Logger::DATA);
 
                                        $datarray = [];
+                                       $datarray['uid'] = $importer_uid;
+                                       $datarray['contact-id'] = $contact['id'];
                                        $datarray['verb'] = Activity::POST;
                                        $datarray['object-type'] = Activity\ObjectType::NOTE;
                                        $datarray['network'] = Protocol::MAIL;
@@ -596,18 +598,10 @@ class OnePoll
                                                $datarray['parent-uri'] = $datarray['uri'];
                                        }
 
-                                       $r = Email::getMessage($mbox, $msg_uid, $reply);
-                                       if (!$r) {
-                                               Logger::log("Mail: can't fetch msg ".$msg_uid." for ".$mailconf['user']);
-                                               continue;
-                                       }
-
-                                       $datarray['body'] = Strings::escapeHtml($r['body']);
-                                       $datarray['body'] = BBCode::limitBodySize($datarray['body']);
-
-                                       Logger::log("Mail: Importing ".$msg_uid." for ".$mailconf['user']);
-
                                        $headers = imap_headerinfo($mbox, $meta->msgno);
+                                       $headers2 = imap_rfc822_parse_headers(imap_fetchheader($mbox, $meta->msgno));
+                                       Logger::info('Got header', ['header' => $headers2]);
+
                                        $object = [];
 
                                        if (!empty($headers->from)) {
@@ -643,16 +637,23 @@ class OnePoll
                                        $datarray['owner-link'] = "mailto:".$contact['addr'];
                                        $datarray['owner-avatar'] = $contact['photo'];
 
-                                       $datarray['uid'] = $importer_uid;
-                                       $datarray['contact-id'] = $contact['id'];
                                        if ($datarray['parent-uri'] === $datarray['uri']) {
                                                $datarray['private'] = 1;
                                        }
+
                                        if (!PConfig::get($importer_uid, 'system', 'allow_public_email_replies')) {
                                                $datarray['private'] = 1;
                                                $datarray['allow_cid'] = '<' . $contact['id'] . '>';
                                        }
 
+                                       $datarray = Email::getMessage($mbox, $msg_uid, $reply, $datarray);
+                                       if (empty($datarray['body'])) {
+                                               Logger::log("Mail: can't fetch msg ".$msg_uid." for ".$mailconf['user']);
+                                               continue;
+                                       }
+
+                                       Logger::log("Mail: Importing ".$msg_uid." for ".$mailconf['user']);
+
                                        Item::insert($datarray);
 
                                        switch ($mailconf['action']) {