PDA

View Full Version : Reset Instant Notification by e-mail subscriptions


Scandal
12-03-2017, 09:15 PM
Hello all! :)

I need a technical advice from some vbulletin experts about a function of vBulletin (Thread Subscriptions). I'm a vbulletin developer too, but since we're talking a production site with lots of members, I need more advices.

Well,
- We need to bring more old members on our board.
- We have already "Instant notify by e-mail" as default subscription at registration, so lots of members that have reply to a thread they are also subscribed to that thread automatically

... the issue is that:
- Since the last some years we had issue with Microsoft accounts (e-mails never sent to @hotmail/ @msn/ @windowslive etc) ++ a very large part of our member using Microsoft accounts), I'm afraid that lots of e-mail never sent.
And we can read this inside an e-mail of vbulletin:


There may also be other replies, but you will not receive any more notifications until you visit the forum again.

All the best,
$vboptions[bbtitle]


So we need to "reset" this functionality, so from now and then all members will receive an instant subscription's e-mail, and after that first notification for each thread, next they will not received as should (and that above phrase said).

You can read this inside /includes/functions_newpost.php (function: exec_send_notification()) :


$useremails = $vbulletin->db->query_read_slave("
SELECT user.*, subscribethread.emailupdate, subscribethread.subscribethreadid
FROM " . TABLE_PREFIX . "subscribethread AS subscribethread
INNER JOIN " . TABLE_PREFIX . "user AS user ON (subscribethread.userid = user.userid)
LEFT JOIN " . TABLE_PREFIX . "usergroup AS usergroup ON (usergroup.usergroupid = user.usergroupid)
LEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON (usertextfield.userid = user.userid)
WHERE subscribethread.threadid = $threadid AND
subscribethread.emailupdate IN (1, 4) AND
subscribethread.canview = 1 AND
" . ($userid ? "CONCAT(' ', IF(usertextfield.ignorelist IS NULL, '', usertextfield.ignorelist), ' ') NOT LIKE '% " . intval($userid) . " %' AND" : '') . "
user.usergroupid <> 3 AND
user.userid <> " . intval($userid) . " AND
user.lastactivity >= " . intval($lastposttime['dateline']) . " AND
(usergroup.genericoptions & " . $vbulletin->bf_ugp_genericoptions['isnotbannedgroup'] . ")
");


As I understand, the hot part is that:
AND user.lastactivity >= " . intval($lastposttime['dateline']) . "

But how I could achieve that I need?
Maybe to create a new unixtimestamp column on "user" table or something else? :)