X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fenotify.php;h=00459ac5c09f5fbd8b78d6bab49c1fa5edc12e4b;hb=82d55f120fd2163afaa57cd64c6a10a626abd2e5;hp=1e2008392d3438494ee0c20d1850f116ef8dd7b9;hpb=789561c7a2e53f374ec0c90eceb928ed66af68c7;p=friendica.git diff --git a/include/enotify.php b/include/enotify.php index 1e2008392d..00459ac5c0 100644 --- a/include/enotify.php +++ b/include/enotify.php @@ -11,15 +11,16 @@ use Friendica\Core\System; use Friendica\Database\DBM; use Friendica\Util\DateTimeFormat; use Friendica\Util\Emailer; +use Friendica\Model\Item; /** * @brief Creates a notification entry and possibly sends a mail * * @param array $params Array with the elements: - uid, item, parent, type, otype, verb, event, - link, subject, body, to_name, to_email, source_name, - source_link, activity, preamble, notify_flags, - language, show_in_notification_page + * uid, item, parent, type, otype, verb, event, + * link, subject, body, to_name, to_email, source_name, + * source_link, activity, preamble, notify_flags, + * language, show_in_notification_page */ function notification($params) { @@ -45,10 +46,7 @@ function notification($params) $hostname = substr($hostname, 0, strpos($hostname, ':')); } - $sender_email = $a->config['sender_email']; - if (empty($sender_email)) { - $sender_email = L10n::t('noreply').'@'.$hostname; - } + $sender_email = $a->getSenderEmailAddress(); if ($params['type'] != SYSTEM_EMAIL) { $user = dba::selectFirst('user', ['nickname', 'page-flags'], @@ -132,7 +130,7 @@ function notification($params) $item = null; if ($params['otype'] === 'item' && $parent_id) { - $item = dba::selectFirst('item', [], ['id' => $parent_id]); + $item = Item::selectFirstForUser($params['uid'], [], ['id' => $parent_id]); } $item_post_type = item_post_type($item); @@ -155,7 +153,7 @@ function notification($params) } // "your post" - if (DBM::is_result($item) && $item['owner-name'] == $item['author-name'] && $item['wall']) { + if (DBM::is_result($item) && $item['owner-id'] == $item['author-id'] && $item['wall']) { $dest_str = L10n::t('%1$s commented on [url=%2$s]your %3$s[/url]', '[url='.$params['source_link'].']'.$params['source_name'].'[/url]', $itemlink, @@ -360,7 +358,7 @@ function notification($params) if ($params['type'] == NOTIFY_SYSTEM) { switch($params['event']) { case "SYSTEM_REGISTER_REQUEST": - $subject = L10n::t('[Friendica System:Notify] registration request'); + $subject = L10n::t('[Friendica System Notify]') . ' ' . L10n::t('registration request'); $preamble = L10n::t('You\'ve received a registration request from \'%1$s\' at %2$s', $params['source_name'], $sitename); $epreamble = L10n::t('You\'ve received a [url=%1$s]registration request[/url] from %2$s.', @@ -368,7 +366,7 @@ function notification($params) '[url='.$params['source_link'].']'.$params['source_name'].'[/url]' ); - $body = L10n::t('Full Name: %1$s\nSite Location: %2$s\nLogin Name: %3$s ' . "\x28" . '%4$s' . "\x28", + $body = L10n::t("Full Name: %s\nSite Location: %s\nLogin Name: %s (%s)", $params['source_name'], $siteurl, $params['source_mail'], $params['source_nick'] @@ -564,11 +562,8 @@ function notification($params) } } - // textversion keeps linebreaks - $textversion = strip_tags(str_replace("
", "\n", html_entity_decode(BBCode::convert(stripslashes(str_replace(["\\r\\n", "\\r", "\\n"], "\n", - $body))),ENT_QUOTES, 'UTF-8'))); - $htmlversion = html_entity_decode(BBCode::convert(stripslashes(str_replace(["\\r\\n", "\\r", "\\n\\n", "\\n"], - "
\n", $body))), ENT_QUOTES, 'UTF-8'); + $textversion = BBCode::toPlaintext($body); + $htmlversion = BBCode::convert($body); $datarray = []; $datarray['banner'] = $banner; @@ -729,27 +724,34 @@ function check_item_notification($itemid, $uid, $defaulttype = "") { $profiles = $profiles2; - $profile_list = ""; + $ret = dba::select('contact', ['id'], ['uid' => 0, 'nurl' => $profiles]); - foreach ($profiles AS $profile) { - if ($profile_list != "") - $profile_list .= "', '"; + $contacts = []; - $profile_list .= dbesc($profile); + while ($contact = dba::fetch($ret)) { + $contacts[] = $contact['id']; } - $profile_list = "'".$profile_list."'"; + $contact_list = implode(',', $contacts); + + dba::close($ret); // Only act if it is a "real" post // We need the additional check for the "local_profile" because of mixed situations on connector networks - $item = q("SELECT `id`, `mention`, `tag`,`parent`, `title`, `body`, `author-name`, `author-link`, `author-avatar`, `guid`, - `parent-uri`, `uri`, `contact-id` + $item = q("SELECT `id`, `mention`, `tag`,`parent`, `title`, `body`, `author-id`, `guid`, + `parent-uri`, `uri`, `contact-id`, `network` FROM `item` WHERE `id` = %d AND `verb` IN ('%s', '') AND `type` != 'activity' AND - NOT (`author-link` IN ($profile_list)) LIMIT 1", + NOT (`author-id` IN ($contact_list)) LIMIT 1", intval($itemid), dbesc(ACTIVITY_POST)); if (!$item) return false; + if ($item[0]['network'] != NETWORK_FEED) { + $author = dba::selectFirst('contact', ['name', 'thumb', 'url'], ['id' => $item[0]['author-id']]); + } else { + $author = dba::selectFirst('contact', ['name', 'thumb', 'url'], ['id' => $item[0]['contact-id']]); + } + // Generate the notification array $params = []; $params["uid"] = $uid; @@ -761,9 +763,9 @@ function check_item_notification($itemid, $uid, $defaulttype = "") { $params["parent"] = $item[0]["parent"]; $params["link"] = System::baseUrl().'/display/'.urlencode($item[0]["guid"]); $params["otype"] = 'item'; - $params["source_name"] = $item[0]["author-name"]; - $params["source_link"] = $item[0]["author-link"]; - $params["source_photo"] = $item[0]["author-avatar"]; + $params["source_name"] = $author["name"]; + $params["source_link"] = $author["url"]; + $params["source_photo"] = $author["thumb"]; if ($item[0]["parent-uri"] === $item[0]["uri"]) { // Send a notification for every new post? @@ -806,7 +808,7 @@ function check_item_notification($itemid, $uid, $defaulttype = "") { // Is it a post that the user had started or where he interacted? $parent = q("SELECT `thread`.`iid` FROM `thread` INNER JOIN `item` ON `item`.`parent` = `thread`.`iid` WHERE `thread`.`iid` = %d AND NOT `thread`.`ignored` AND - (`thread`.`mention` OR `item`.`author-link` IN ($profile_list)) + (`thread`.`mention` OR `item`.`author-id` IN ($contact_list)) LIMIT 1", intval($item[0]["parent"]));