/**
* @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)
{
$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'],
$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);
}
// "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,
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.',
'[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']
$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;
$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),
}
}
- // textversion keeps linebreaks
- $textversion = strip_tags(str_replace("<br>", "\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"],
- "<br />\n", $body))), ENT_QUOTES, 'UTF-8');
+ $textversion = BBCode::toPlaintext($body);
+ $htmlversion = BBCode::convert($body);
$datarray = [];
$datarray['banner'] = $banner;
$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;
$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?
// 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"]));