X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fenotify.php;h=2d4cbdadb5a09a5f1ac461576b6dd77f969bfe39;hb=6e1ed0b0d33ce3f893397eeb25909269402cf6bd;hp=44fca484cc1f17cea5d582d760b13b0af6386b38;hpb=208a149a7b7e25dc84c39e5631cba11d41869bae;p=friendica.git
diff --git a/include/enotify.php b/include/enotify.php
index 44fca484cc..2d4cbdadb5 100644
--- a/include/enotify.php
+++ b/include/enotify.php
@@ -2,25 +2,25 @@
/**
* @file include/enotify.php
*/
-use Friendica\App;
+
+use Friendica\Content\Text\BBCode;
use Friendica\Core\Addon;
use Friendica\Core\Config;
use Friendica\Core\L10n;
use Friendica\Core\System;
use Friendica\Database\DBM;
+use Friendica\Util\DateTimeFormat;
use Friendica\Util\Emailer;
-
-require_once 'include/bbcode.php';
-require_once 'include/html2bbcode.php';
+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)
{
@@ -33,11 +33,11 @@ function notification($params)
$product = FRIENDICA_PLATFORM;
$siteurl = System::baseUrl(true);
$thanks = L10n::t('Thank You,');
- $sitename = $a->config['sitename'];
- if (!x($a->config['admin_name'])) {
- $site_admin = L10n::t('%s Administrator', $sitename);
+ $sitename = Config::get('config', 'sitename');
+ if (Config::get('config', 'admin_name')) {
+ $site_admin = L10n::t('%1$s, %2$s Administrator', Config::get('config', 'admin_name'), $sitename);
} else {
- $site_admin = L10n::t('%1$s, %2$s Administrator', $a->config['admin_name'], $sitename);
+ $site_admin = L10n::t('%s Administrator', $sitename);
}
$sender_name = $sitename;
@@ -46,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'],
@@ -96,6 +93,8 @@ function notification($params)
}
if ($params['type'] == NOTIFY_MAIL) {
+ $itemlink = $siteurl.'/message/'.$params['item']['id'];
+
$subject = L10n::t('[Friendica:Notify] New mail received at %s', $sitename);
$preamble = L10n::t('%1$s sent you a new private message at %2$s.', $params['source_name'], $sitename);
@@ -104,7 +103,6 @@ function notification($params)
$sitelink = L10n::t('Please visit %s to view and/or reply to your private messages.');
$tsitelink = sprintf($sitelink, $siteurl.'/message/'.$params['item']['id']);
$hsitelink = sprintf($sitelink, ''.$sitename.'');
- $itemlink = $siteurl.'/message/'.$params['item']['id'];
}
if ($params['type'] == NOTIFY_COMMENT) {
@@ -133,10 +131,11 @@ function notification($params)
$item = null;
if ($params['otype'] === 'item' && $parent_id) {
- $item = dba::selectFirst('item', [], ['id' => $parent_id]);
+ $item = Item::selectFirstForUser($params['uid'], Item::ITEM_FIELDLIST, ['id' => $parent_id]);
}
$item_post_type = item_post_type($item);
+ $itemlink = $item['plink'];
// "a post"
$dest_str = L10n::t('%1$s commented on [url=%2$s]a %3$s[/url]',
@@ -156,7 +155,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,
@@ -245,6 +244,7 @@ function notification($params)
}
if ($params['type'] == NOTIFY_TAGSHARE) {
+ $itemlink = $params['link'];
$subject = L10n::t('[Friendica:Notify] %s tagged your post', $params['source_name']);
$preamble = L10n::t('%1$s tagged your post at %2$s', $params['source_name'], $sitename);
@@ -256,10 +256,10 @@ function notification($params)
$sitelink = L10n::t('Please visit %s to view and/or reply to the conversation.');
$tsitelink = sprintf($sitelink, $siteurl);
$hsitelink = sprintf($sitelink, ''.$sitename.'');
- $itemlink = $params['link'];
}
if ($params['type'] == NOTIFY_INTRO) {
+ $itemlink = $params['link'];
$subject = L10n::t('[Friendica:Notify] Introduction received');
$preamble = L10n::t('You\'ve received an introduction from \'%1$s\' at %2$s', $params['source_name'], $sitename);
@@ -273,7 +273,6 @@ function notification($params)
$sitelink = L10n::t('Please visit %s to approve or reject the introduction.');
$tsitelink = sprintf($sitelink, $siteurl);
$hsitelink = sprintf($sitelink, ''.$sitename.'');
- $itemlink = $params['link'];
switch ($params['verb']) {
case ACTIVITY_FRIEND:
@@ -303,6 +302,7 @@ function notification($params)
}
if ($params['type'] == NOTIFY_SUGGEST) {
+ $itemlink = $params['link'];
$subject = L10n::t('[Friendica:Notify] Friend suggestion received');
$preamble = L10n::t('You\'ve received a friend suggestion from \'%1$s\' at %2$s', $params['source_name'], $sitename);
@@ -319,11 +319,11 @@ function notification($params)
$sitelink = L10n::t('Please visit %s to approve or reject the suggestion.');
$tsitelink = sprintf($sitelink, $siteurl);
$hsitelink = sprintf($sitelink, ''.$sitename.'');
- $itemlink = $params['link'];
}
if ($params['type'] == NOTIFY_CONFIRM) {
if ($params['verb'] == ACTIVITY_FRIEND) { // mutual connection
+ $itemlink = $params['link'];
$subject = L10n::t('[Friendica:Notify] Connection accepted');
$preamble = L10n::t('\'%1$s\' has accepted your connection request at %2$s', $params['source_name'], $sitename);
@@ -337,8 +337,8 @@ function notification($params)
$sitelink = L10n::t('Please visit %s if you wish to make any changes to this relationship.');
$tsitelink = sprintf($sitelink, $siteurl);
$hsitelink = sprintf($sitelink, ''.$sitename.'');
- $itemlink = $params['link'];
} else { // ACTIVITY_FOLLOW
+ $itemlink = $params['link'];
$subject = L10n::t('[Friendica:Notify] Connection accepted');
$preamble = L10n::t('\'%1$s\' has accepted your connection request at %2$s', $params['source_name'], $sitename);
@@ -347,21 +347,21 @@ function notification($params)
'[url='.$params['source_link'].']'.$params['source_name'].'[/url]'
);
- $body = L10n::t('\'%1$s\' has chosen to accept you a "fan", which restricts some forms of communication - such as private messaging and some profile interactions. If this is a celebrity or community page, these settings were applied automatically.', $params['source_name']);
+ $body = L10n::t('\'%1$s\' has chosen to accept you a fan, which restricts some forms of communication - such as private messaging and some profile interactions. If this is a celebrity or community page, these settings were applied automatically.', $params['source_name']);
$body .= "\n\n";
$body .= L10n::t('\'%1$s\' may choose to extend this into a two-way or more permissive relationship in the future.', $params['source_name']);
$sitelink = L10n::t('Please visit %s if you wish to make any changes to this relationship.');
$tsitelink = sprintf($sitelink, $siteurl);
$hsitelink = sprintf($sitelink, ''.$sitename.'');
- $itemlink = $params['link'];
}
}
if ($params['type'] == NOTIFY_SYSTEM) {
switch($params['event']) {
case "SYSTEM_REGISTER_REQUEST":
- $subject = L10n::t('[Friendica System:Notify] registration request');
+ $itemlink = $params['link'];
+ $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.',
@@ -369,7 +369,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 (%4$s)',
+ $body = L10n::t("Full Name: %s\nSite Location: %s\nLogin Name: %s (%s)",
$params['source_name'],
$siteurl, $params['source_mail'],
$params['source_nick']
@@ -378,7 +378,6 @@ function notification($params)
$sitelink = L10n::t('Please visit %s to approve or reject the request.');
$tsitelink = sprintf($sitelink, $params['link']);
$hsitelink = sprintf($sitelink, ''.$sitename.'
');
- $itemlink = $params['link'];
break;
case "SYSTEM_DB_UPDATE_FAIL":
break;
@@ -447,10 +446,10 @@ function notification($params)
$datarray = [];
$datarray['hash'] = $hash;
$datarray['name'] = $params['source_name'];
- $datarray['name_cache'] = strip_tags(bbcode($params['source_name']));
+ $datarray['name_cache'] = strip_tags(BBCode::convert($params['source_name']));
$datarray['url'] = $params['source_link'];
$datarray['photo'] = $params['source_photo'];
- $datarray['date'] = datetime_convert();
+ $datarray['date'] = DateTimeFormat::utcNow();
$datarray['uid'] = $params['uid'];
$datarray['link'] = $itemlink;
$datarray['iid'] = $item_id;
@@ -518,7 +517,7 @@ function notification($params)
$itemlink = System::baseUrl().'/notify/view/'.$notify_id;
$msg = replace_macros($epreamble, ['$itemlink' => $itemlink]);
- $msg_cache = format_notification_message($datarray['name_cache'], strip_tags(bbcode($msg)));
+ $msg_cache = format_notification_message($datarray['name_cache'], strip_tags(BBCode::convert($msg)));
q("UPDATE `notify` SET `msg` = '%s', `msg_cache` = '%s' WHERE `id` = %d AND `uid` = %d",
dbesc($msg),
dbesc($msg_cache),
@@ -565,11 +564,8 @@ function notification($params)
}
}
- // textversion keeps linebreaks
- $textversion = strip_tags(str_replace("
", "\n", html_entity_decode(bbcode(stripslashes(str_replace(["\\r\\n", "\\r", "\\n"], "\n",
- $body))),ENT_QUOTES, 'UTF-8')));
- $htmlversion = html_entity_decode(bbcode(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;
@@ -578,7 +574,7 @@ function notification($params)
$datarray['sitename'] = $sitename;
$datarray['siteurl'] = $siteurl;
$datarray['type'] = $params['type'];
- $datarray['parent'] = $params['parent'];
+ $datarray['parent'] = $parent_id;
$datarray['source_name'] = $params['source_name'];
$datarray['source_link'] = $params['source_link'];
$datarray['source_photo'] = $params['source_photo'];
@@ -613,7 +609,7 @@ function notification($params)
'$source_name' => $datarray['source_name'],
'$source_link' => $datarray['source_link'],
'$source_photo' => $datarray['source_photo'],
- '$username' => $datarray['to_name'],
+ '$username' => $datarray['username'],
'$hsitelink' => $datarray['hsitelink'],
'$hitemlink' => $datarray['hitemlink'],
'$thanks' => $datarray['thanks'],
@@ -634,7 +630,7 @@ function notification($params)
'$source_name' => $datarray['source_name'],
'$source_link' => $datarray['source_link'],
'$source_photo' => $datarray['source_photo'],
- '$username' => $datarray['to_name'],
+ '$username' => $datarray['username'],
'$tsitelink' => $datarray['tsitelink'],
'$titemlink' => $datarray['titemlink'],
'$thanks' => $datarray['thanks'],
@@ -730,26 +726,28 @@ 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`
- FROM `item` WHERE `id` = %d AND `verb` IN ('%s', '') AND `type` != 'activity' AND
- NOT (`author-link` IN ($profile_list)) LIMIT 1",
- intval($itemid), dbesc(ACTIVITY_POST));
- if (!$item)
- return false;
+ $fields = ['id', 'mention', 'tag', 'parent', 'title', 'body',
+ 'author-link', 'author-name', 'author-avatar', 'author-id',
+ 'guid', 'parent-uri', 'uri', 'contact-id', 'network'];
+ $condition = ['id' => $itemid, 'gravity' => [GRAVITY_PARENT, GRAVITY_COMMENT]];
+ $item = Item::selectFirst($fields, $condition);
+ if (!DBM::is_result($item) || in_array($item['author-id'], $contacts)) {
+ return;
+ }
// Generate the notification array
$params = [];
@@ -758,17 +756,17 @@ function check_item_notification($itemid, $uid, $defaulttype = "") {
$params["language"] = $user["language"];
$params["to_name"] = $user["username"];
$params["to_email"] = $user["email"];
- $params["item"] = $item[0];
- $params["parent"] = $item[0]["parent"];
- $params["link"] = System::baseUrl().'/display/'.urlencode($item[0]["guid"]);
+ $params["item"] = $item;
+ $params["parent"] = $item["parent"];
+ $params["link"] = System::baseUrl().'/display/'.urlencode($item["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"] = $item["author-name"];
+ $params["source_link"] = $item["author-link"];
+ $params["source_photo"] = $item["author-avatar"];
- if ($item[0]["parent-uri"] === $item[0]["uri"]) {
+ if ($item["parent-uri"] === $item["uri"]) {
// Send a notification for every new post?
- $send_notification = dba::exists('contact', ['id' => $item[0]['contact-id'], 'notify_new_posts' => true]);
+ $send_notification = dba::exists('contact', ['id' => $item['contact-id'], 'notify_new_posts' => true]);
if (!$send_notification) {
$tags = q("SELECT `url` FROM `term` WHERE `otype` = %d AND `oid` = %d AND `type` = %d AND `uid` = %d",
@@ -795,11 +793,11 @@ function check_item_notification($itemid, $uid, $defaulttype = "") {
$tagged = false;
foreach ($profiles AS $profile) {
- if (strpos($item[0]["tag"], "=".$profile."]") || strpos($item[0]["body"], "=".$profile."]"))
+ if (strpos($item["tag"], "=".$profile."]") || strpos($item["body"], "=".$profile."]"))
$tagged = true;
}
- if ($item[0]["mention"] || $tagged || ($defaulttype == NOTIFY_TAGSELF)) {
+ if ($item["mention"] || $tagged || ($defaulttype == NOTIFY_TAGSELF)) {
$params["type"] = NOTIFY_TAGSELF;
$params["verb"] = ACTIVITY_TAG;
}
@@ -807,9 +805,9 @@ 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"]));
+ intval($item["parent"]));
if ($parent && !isset($params["type"])) {
$params["type"] = NOTIFY_COMMENT;