Thread: Administrative and Maintenance Tools - [DBTech] vBMail v2 (vB4)
View Single Post
  #343  
Old 10-29-2016, 10:22 AM
anihil2 anihil2 is offline
 
Join Date: Aug 2016
Posts: 6
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by anihil2 View Post
Hello, I found one issue with vBMail. When user click on unsubscribe link in email he/she will get feedback pool before getting unscubscribe. Lets assume that at this time noone else did unsubscribe. After user unsubscribed in View Mail History admin should see for this specific mail only one person in 'Unsubscribed Users' column. That is correct if user used unsubscribe link only once. But if user go to this unsubscribe link without even setting feedback option it will automatically increment this 'Unsubscribed Users' counter. In my example below I have one user test which press link unsubscribe several times and I get:


Could it be fixed to count only users that actually unsubscribed from mailing list and not how many time they clikc on unsubscribe link?
Didn't have time to wait for fix so I fix it myself. Fix description below.

In file dbtech\vbmail\actions\mailinglists.php from lines 1053-1069 move code:
PHP Code:
if ($vbulletin->GPC['mailid'])
    {
        
// We have a mail id
        
if ($mail $db->query_first_slave("SELECT unsubscriptions FROM " TABLE_PREFIX "dbtech_vbmail_mail WHERE mailid = " intval($vbulletin->GPC['mailid'])))
        {
            
// Mail id was valid
            
if (!$subscribeflag OR $mail['unsubscriptions'])
            {
                
// We're either unsubscribing, or we can decrement it successfully
                
$db->query_write("
                    UPDATE " 
TABLE_PREFIX "dbtech_vbmail_mail
                    SET unsubscriptions = unsubscriptions " 
. (!$subscribeflag '+' '-') . " 1
                    WHERE mailid = " 
intval($vbulletin->GPC['mailid'])
                );
            }
        }
    } 
Before line 1043 which is:
PHP Code:
VBMAIL::$db->insert('dbtech_vbmail_subscriptionlog', array( 
After change it code should look like this:
PHP Code:
    else if ($exists)
    {
        if (
$vbulletin->GPC['mailid'])
        {
            
// We have a mail id
            
if ($mail $db->query_first_slave("SELECT unsubscriptions FROM " TABLE_PREFIX "dbtech_vbmail_mail WHERE mailid = " intval($vbulletin->GPC['mailid'])))
            {
                
// Mail id was valid
                
if (!$subscribeflag OR $mail['unsubscriptions'])
                {
                    
// We're either unsubscribing, or we can decrement it successfully
                    
$db->query_write("
                        UPDATE " 
TABLE_PREFIX "dbtech_vbmail_mail
                        SET unsubscriptions = unsubscriptions " 
. (!$subscribeflag '+' '-') . " 1
                        WHERE mailid = " 
intval($vbulletin->GPC['mailid'])
                    );
                }
            }
        }
        
        
// We either subscribed or unsubscribed
        
VBMAIL::$db->insert('dbtech_vbmail_subscriptionlog', array(
            
'userid'         => $user['userid'],
            
'mailinglistid' => $mailinglist['mailinglistid'],
            
'dateline'         => TIMENOW,
            
'subscribed'     => $subscribeflag,
            
'reason'         => (!$subscribeflag 'un' '') . 'subscribed',
            
'mailid'         => $vbulletin->GPC['mailid']
        ));
    } 
What this change will give you?
When user hit link with unsubscribe it will increment counter "Unsubscribed Users" only when user flag in database change from Subscribed to Unsubscribed. If user try to hit unsubscribe link again it will not increment this counter anymore.

I hope this will help someone.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01236 seconds
  • Memory Usage 1,818KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (3)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete