Alerts, Notifications are not working

Started by gautamg, June 02, 2015, 03:59:20 AM

Previous topic - Next topic

Dragooon

I tried on my localhost and it works for me, are the profile settings correct for the person receiving the alerts?

Kindred

Слaва
Украинi

Please do not PM, IM or Email me with support questions.  You will get better and faster responses in the support boards.  Thank you.

"Loki is not evil, although he is certainly not a force for good. Loki is... complicated."

live627

Quote from: gautamg on June 02, 2015, 05:40:23 AM
I am using SMF 2.1 Beta 1 that was released in November in 2014.
Ah,  there's your problem. That release has a bug where alert emails never get sent.

Illori

Quote from: live627 on June 02, 2015, 09:37:22 PM
Quote from: gautamg on June 02, 2015, 05:40:23 AM
I am using SMF 2.1 Beta 1 that was released in November in 2014.
Ah,  there's your problem. That release has a bug where alert emails never get sent.

that was a bug with the email for resetting your password, not for notifications/alerts.

lc62003

Quote from: Dragooon on June 02, 2015, 04:48:01 PM
I tried on my localhost

To be quite honest, I believe this is why many of the bugs persist.  Localhost simply is not the same as a live server.  I already outed (here) an upgrade bug that didn't occur on localhost.   ;)

Kindred

Well, I have it installed and running on an actual site/server...  and it works correctly for me
Слaва
Украинi

Please do not PM, IM or Email me with support questions.  You will get better and faster responses in the support boards.  Thank you.

"Loki is not evil, although he is certainly not a force for good. Loki is... complicated."

lc62003

Quote from: Kindred on June 03, 2015, 10:30:45 AM
Well, I have it installed and running on an actual site/server...  and it works correctly for me

I didn't say that was the case for this particular bug.  Just saying it's more relevant for troubleshooting or even bug discovery in general.   ;)

lc62003

Alerts work for me using a legacy version of  Likes-Notify.php in the ./Sources/tasks folder.



<?php

/**
 * This task handles notifying users when something is liked.
 *
 * Simple Machines Forum (SMF)
 *
 * @package SMF
 * @author Simple Machines http://www.simplemachines.org
 * @copyright 2014 Simple Machines and individual contributors
 * @license http://www.simplemachines.org/about/smf/license.php BSD
 *
 * @version 2.1 Alpha 1
 */

class Likes_Notify_Background extends SMF_BackgroundTask
{
public function execute()
{
global $smcFunc$sourcedir;

$author false;
// We need to figure out who the owner of this is.
if ($this->_details['content_type'] == 'msg')
{
$request $smcFunc['db_query']('''
SELECT mem.id_member, mem.id_group, mem.id_post_group, mem.additional_groups, b.member_groups
FROM {db_prefix}messages AS m
INNER JOIN {db_prefix}members AS mem ON (m.id_member = mem.id_member)
INNER JOIN {db_prefix}boards AS b ON (m.id_board = b.id_board)
WHERE id_msg = {int:msg}'
,
array(
'msg' => $this->_details['content_id'],
)
);
if ($row $smcFunc['db_fetch_assoc']($request))
{
// Before we assign the author, let's just check that the author can see the board this is in...
// as it'd suck to notify someone their post was liked when in a board they can't see.
$groups explode(','$row['additional_groups']);
$groups[] = $row['id_group'];
$groups[] = $row['id_post_group'];
$allowed explode(','$row['member_groups']);

// If the user is in group 1 anywhere, they can see everything anyway.
if (in_array(1$groups) || count(array_intersect($allowed$groups)) != 0)
$author $row['id_member'];
}
$smcFunc['db_free_result']($request);
}
else
{
// This isn't something we know natively how to support. Call the hooks, if they're dealing with it, return false, otherwise return the user id.
$hook_results call_integration_hook('integrate_find_like_author', array($this->_details['content_type'], $this->_details['content_id']));
foreach ($hook_results as $result)
if (!empty($result))
{
$author $result;
break;
}
}

// If we didn't have a member... leave.
if (empty($author))
return true;

// If the person who sent the notification is the person whose content it is, do nothing.
if ($author == $this->_details['sender_id'])
return true;

require_once($sourcedir '/Subs-Notify.php');
$prefs getNotifyPrefs($author$this->_details['content_type'] . '_like'true);

// The likes setup doesn't support email notifications because that would be too many emails.
// As a result, the value should really just be non empty.

// Check the value. If no value or it's empty, they didn't want alerts, oh well.
if (empty($prefs[$author][$this->_details['content_type'] . '_like']))
return true;

// Issue, update, move on.
$smcFunc['db_insert']('insert',
'{db_prefix}user_alerts',
array('alert_time' => 'int''id_member' => 'int''id_member_started' => 'int''member_name' => 'string',
'content_type' => 'string''content_id' => 'int''content_action' => 'string''is_read' => 'int''extra' => 'string'),
array($this->_details['time'], $author$this->_details['sender_id'], $this->_details['sender_name'],
$this->_details['content_type'], $this->_details['content_id'], 'like'0''),
array('id_alert')
);

updateMemberData($author, array('alerts' => '+'));

return true;
}
}
?>





It is essentially the same as the current Git file minus the "anti spam" code.


// Don't spam the alerts: if there is an existing unread alert of the
// requested type for the target user from the sender, don't make a new one.
$request = $smcFunc['db_query']('', '
SELECT id_alert
FROM {db_prefix}user_alerts
WHERE id_member = {int:id_member}
AND is_read = 0
AND content_type = {string:content_type}
AND content_id = {int:content_id}
AND content_action = {string:content_action}',
array(
'id_member' => $author,
'content_type' => $this->_details['content_type'],
'content_id' => $this->_details['content_id'],
'content_action' => 'like',
)
);

if ($smcFunc['db_num_rows']($request) > 0)
return true;
$smcFunc['db_free_result']($request);



Just out of curiosity if your alerts are working, does your file contain the above code?  If so why does it not work for my site?

Dragooon

Are no alerts being issued before you remove the code? Not even one?

lc62003

Quote from: Dragooon on June 03, 2015, 04:43:08 PM
Are no alerts being issued before you remove the code? Not even one?

Correct.  None whatsoever. 

Dragooon

Do you have any rows in user_alerts table?

lc62003

Actually yes.  The alert queue shows up in the alert notifications with the addition of the legacy Likes-Notify file since they lie in wait from the database. 

Advertisement: