Changeset 1575

Show
Ignore:
Timestamp:
03/29/08 13:05:14 (4 months ago)
Author:
Neal
Message:

Implemented ticket #7: added form email flood protection and other group email controls.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/punbb-1.3-dev/extras/db_update.php

    r1535 r1575  
    768768                $db->add_field($db->prefix.'users', 'date_format', 'INT(10)', false, 0, 'dst'); 
    769769 
     770                // Add the last_email_sent column to the users table and the g_send_email and 
     771                // g_email_flood columns to the groups table 
     772                $db->add_field($db->prefix.'users', 'last_email_sent', 'INT(10)', true, null, 'last_post'); 
     773                $db->add_field($db->prefix.'groups', 'g_send_email', 'TINYINT(1)', false, 1, 'g_search_users'); 
     774                $db->add_field($db->prefix.'groups', 'g_email_flood', 'INT(10)', false, 60, 'g_search_flood'); 
     775 
     776                // Set non-default g_send_email and g_flood_email values properly 
     777                $db->query('UPDATE '.$db->prefix.'groups SET g_send_email=0 WHERE g_id=2') or error(__FILE__, __LINE__); 
     778                $db->query('UPDATE '.$db->prefix.'groups SET g_email_flood=0 WHERE g_id IN (1,2,4)') or error(__FILE__, __LINE__); 
     779 
    770780                // Add the auto notify/subscription option to the users table 
    771781                $db->add_field($db->prefix.'users', 'auto_notify', 'TINYINT(1)', false, 0, 'notify_with_post'); 
  • branches/punbb-1.3-dev/upload/admin/groups.php

    r1533 r1575  
    183183<?php endif; ?>                                         <div class="radbox"><label for="fld<?php echo ++$pun_page['fld_count'] ?>"><input type="checkbox" id="fld<?php echo $pun_page['fld_count'] ?>" name="search" value="1"<?php if ($group['g_search'] == '1') echo ' checked="checked"' ?> /> <?php echo $lang_admin['Allow use search'] ?></label></div> 
    184184                                                <div class="radbox"><label for="fld<?php echo ++$pun_page['fld_count'] ?>"><input type="checkbox" id="fld<?php echo $pun_page['fld_count'] ?>" name="search_users" value="1"<?php if ($group['g_search_users'] == '1') echo ' checked="checked"' ?> /> <?php echo $lang_admin['Allow search users'] ?></label></div> 
     185                                                <div class="radbox"><label for="fld<?php echo ++$pun_page['fld_count'] ?>"><input type="checkbox" id="fld<?php echo $pun_page['fld_count'] ?>" name="send_email" value="1"<?php if ($group['g_send_email'] == '1') echo ' checked="checked"' ?> /> <?php echo $lang_admin['Allow send email'] ?></label></div> 
    185186                                        </fieldset> 
    186187<?php ($hook = get_hook('agr_add_edit_group_permissions_end')) ? eval($hook) : null; ?> 
     
    223224                                                </label> 
    224225                                        </div> 
     226                                        <div class="frm-fld text"> 
     227                                                <label for="fld<?php echo ++$pun_page['fld_count'] ?>"> 
     228                                                        <span class="fld-label"><?php echo $lang_admin['Email flood interval'] ?></span><br /> 
     229                                                        <span class="fld-input"><input type="text" id="fld<?php echo $pun_page['fld_count'] ?>" name="email_flood" size="5" maxlength="4" value="<?php echo $group['g_email_flood'] ?>" /></span> 
     230                                                        <span class="fld-help"><?php echo $lang_admin['Email flood interval info'] ?></span> 
     231                                                </label> 
     232                                        </div> 
    225233<?php ($hook = get_hook('agr_add_edit_group_flood_end')) ? eval($hook) : null; ?> 
    226234                                </fieldset> 
     
    268276        $search = (isset($_POST['search']) && $_POST['search'] == '1') || $is_admin_group ? '1' : '0'; 
    269277        $search_users = (isset($_POST['search_users']) && $_POST['search_users'] == '1') || $is_admin_group ? '1' : '0'; 
     278        $send_email = (isset($_POST['send_email']) && $_POST['send_email'] == '1') || $is_admin_group ? '1' : '0'; 
    270279        $edit_subjects_interval = isset($_POST['edit_subjects_interval']) ? intval($_POST['edit_subjects_interval']) : '0'; 
    271280        $post_flood = isset($_POST['post_flood']) ? intval($_POST['post_flood']) : '0'; 
    272281        $search_flood = isset($_POST['search_flood']) ? intval($_POST['search_flood']) : '0'; 
     282        $email_flood = isset($_POST['email_flood']) ? intval($_POST['email_flood']) : '0'; 
    273283 
    274284        if ($title == '') 
     
    297307                // Insert the new group 
    298308                $query = array( 
    299                         'INSERT'        => 'g_title, g_user_title, g_moderator, g_mod_edit_users, g_mod_rename_users, g_mod_change_passwords, g_mod_ban_users, g_read_board, g_view_users, g_post_replies, g_post_topics, g_edit_posts, g_delete_posts, g_delete_topics, g_set_title, g_search, g_search_users, g_edit_subjects_interval, g_post_flood, g_search_flood', 
     309                        'INSERT'        => 'g_title, g_user_title, g_moderator, g_mod_edit_users, g_mod_rename_users, g_mod_change_passwords, g_mod_ban_users, g_read_board, g_view_users, g_post_replies, g_post_topics, g_edit_posts, g_delete_posts, g_delete_topics, g_set_title, g_search, g_search_users, g_send_email, g_edit_subjects_interval, g_post_flood, g_search_flood, g_email_flood', 
    300310                        'INTO'          => 'groups', 
    301                         'VALUES'        => '\''.$db->escape($title).'\', '.$user_title.', '.$moderator.', '.$mod_edit_users.', '.$mod_rename_users.', '.$mod_change_passwords.', '.$mod_ban_users.', '.$read_board.', '.$view_users.', '.$post_replies.', '.$post_topics.', '.$edit_posts.', '.$delete_posts.', '.$delete_topics.', '.$set_title.', '.$search.', '.$search_users.', '.$edit_subjects_interval.', '.$post_flood.', '.$search_flood 
     311                        'VALUES'        => '\''.$db->escape($title).'\', '.$user_title.', '.$moderator.', '.$mod_edit_users.', '.$mod_rename_users.', '.$mod_change_passwords.', '.$mod_ban_users.', '.$read_board.', '.$view_users.', '.$post_replies.', '.$post_topics.', '.$edit_posts.', '.$delete_posts.', '.$delete_topics.', '.$set_title.', '.$search.', '.$search_users.', '.$send_email.', '.$edit_subjects_interval.', '.$post_flood.', '.$search_flood.', '.$email_flood 
    302312                ); 
    303313 
     
    355365                $query = array( 
    356366                        'UPDATE'        => 'groups', 
    357                         'SET'           => 'g_title=\''.$db->escape($title).'\', g_user_title='.$user_title.', g_moderator='.$moderator.', g_mod_edit_users='.$mod_edit_users.', g_mod_rename_users='.$mod_rename_users.', g_mod_change_passwords='.$mod_change_passwords.', g_mod_ban_users='.$mod_ban_users.', g_read_board='.$read_board.', g_view_users='.$view_users.', g_post_replies='.$post_replies.', g_post_topics='.$post_topics.', g_edit_posts='.$edit_posts.', g_delete_posts='.$delete_posts.', g_delete_topics='.$delete_topics.', g_set_title='.$set_title.', g_search='.$search.', g_search_users='.$search_users.', g_edit_subjects_interval='.$edit_subjects_interval.', g_post_flood='.$post_flood.', g_search_flood='.$search_flood, 
     367                        'SET'           => 'g_title=\''.$db->escape($title).'\', g_user_title='.$user_title.', g_moderator='.$moderator.', g_mod_edit_users='.$mod_edit_users.', g_mod_rename_users='.$mod_rename_users.', g_mod_change_passwords='.$mod_change_passwords.', g_mod_ban_users='.$mod_ban_users.', g_read_board='.$read_board.', g_view_users='.$view_users.', g_post_replies='.$post_replies.', g_post_topics='.$post_topics.', g_edit_posts='.$edit_posts.', g_delete_posts='.$delete_posts.', g_delete_topics='.$delete_topics.', g_set_title='.$set_title.', g_search='.$search.', g_search_users='.$search_users.', g_send_email='.$send_email.', g_edit_subjects_interval='.$edit_subjects_interval.', g_post_flood='.$post_flood.', g_search_flood='.$search_flood.', g_email_flood='.$email_flood, 
    358368                        'WHERE'         => 'g_id='.$group_id 
    359369                ); 
  • branches/punbb-1.3-dev/upload/install.php

    r1533 r1575  
    789789                                        g_search TINYINT(1) NOT NULL DEFAULT 1, 
    790790                                        g_search_users TINYINT(1) NOT NULL DEFAULT 1, 
     791                                        g_send_email TINYINT(1) NOT NULL DEFAULT 1, 
    791792                                        g_edit_subjects_interval SMALLINT(6) NOT NULL DEFAULT 300, 
    792793                                        g_post_flood SMALLINT(6) NOT NULL DEFAULT 30, 
    793794                                        g_search_flood SMALLINT(6) NOT NULL DEFAULT 30, 
     795                                        g_email_flood SMALLINT(6) NOT NULL DEFAULT 60, 
    794796                                        PRIMARY KEY (g_id) 
    795797                                        ) ENGINE = MyISAM CHARACTER SET utf8"; 
     
    816818                                        g_search SMALLINT NOT NULL DEFAULT 1, 
    817819                                        g_search_users SMALLINT NOT NULL DEFAULT 1, 
     820                                        g_send_email SMALLINT NOT NULL DEFAULT 1, 
    818821                                        g_edit_subjects_interval SMALLINT NOT NULL DEFAULT 300, 
    819822                                        g_post_flood SMALLINT NOT NULL DEFAULT 30, 
    820823                                        g_search_flood SMALLINT NOT NULL DEFAULT 30, 
     824                                        g_email_flood SMALLINT NOT NULL DEFAULT 60, 
    821825                                        PRIMARY KEY (g_id) 
    822826                                        )"; 
     
    843847                                        g_search INTEGER NOT NULL DEFAULT 1, 
    844848                                        g_search_users INTEGER NOT NULL DEFAULT 1, 
     849                                        g_send_email INTEGER NOT NULL DEFAULT 1, 
    845850                                        g_edit_subjects_interval INTEGER NOT NULL DEFAULT 300, 
    846851                                        g_post_flood INTEGER NOT NULL DEFAULT 30, 
    847852                                        g_search_flood INTEGER NOT NULL DEFAULT 30, 
     853                                        g_email_flood INTEGER NOT NULL DEFAULT 60, 
    848854                                        PRIMARY KEY (g_id) 
    849855                                        )"; 
     
    12591265                                        num_posts INT(10) UNSIGNED NOT NULL DEFAULT 0, 
    12601266                                        last_post INT(10) UNSIGNED, 
     1267                                        last_email_sent INT(10) UNSIGNED, 
    12611268                                        registered INT(10) UNSIGNED NOT NULL DEFAULT 0, 
    12621269                                        registration_ip VARCHAR(15) NOT NULL DEFAULT '0.0.0.0', 
     
    13071314                                        num_posts INT NOT NULL DEFAULT 0, 
    13081315                                        last_post INT, 
     1316                                        last_email_sent INT, 
    13091317                                        registered INT NOT NULL DEFAULT 0, 
    13101318                                        registration_ip VARCHAR(15) NOT NULL DEFAULT '0.0.0.0', 
     
    13551363                                        num_posts INTEGER NOT NULL DEFAULT 0, 
    13561364                                        last_post INTEGER, 
     1365                                        last_email_sent INTEGER, 
    13571366                                        registered INTEGER NOT NULL DEFAULT 0, 
    13581367                                        registration_ip VARCHAR(15) NOT NULL DEFAULT '0.0.0.0', 
     
    14181427 
    14191428        // Insert the four preset groups 
    1420         $db->query('INSERT INTO '.$db->prefix."groups (g_title, g_user_title, g_moderator, g_mod_edit_users, g_mod_rename_users, g_mod_change_passwords, g_mod_ban_users, g_read_board, g_view_users, g_post_replies, g_post_topics, g_edit_posts, g_delete_posts, g_delete_topics, g_set_title, g_search, g_search_users, g_edit_subjects_interval, g_post_flood, g_search_flood) VALUES('Administrators', 'Administrator', 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0)") or error(__FILE__, __LINE__); 
    1421         $db->query('INSERT INTO '.$db->prefix."groups (g_title, g_user_title, g_moderator, g_mod_edit_users, g_mod_rename_users, g_mod_change_passwords, g_mod_ban_users, g_read_board, g_view_users, g_post_replies, g_post_topics, g_edit_posts, g_delete_posts, g_delete_topics, g_set_title, g_search, g_search_users, g_edit_subjects_interval, g_post_flood, g_search_flood) VALUES('Guest', NULL, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0)") or error(__FILE__, __LINE__); 
    1422         $db->query('INSERT INTO '.$db->prefix."groups (g_title, g_user_title, g_moderator, g_mod_edit_users, g_mod_rename_users, g_mod_change_passwords, g_mod_ban_users, g_read_board, g_view_users, g_post_replies, g_post_topics, g_edit_posts, g_delete_posts, g_delete_topics, g_set_title, g_search, g_search_users, g_edit_subjects_interval, g_post_flood, g_search_flood) VALUES('Members', NULL, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 300, 60, 30)") or error(__FILE__, __LINE__); 
    1423         $db->query('INSERT INTO '.$db->prefix."groups (g_title, g_user_title, g_moderator, g_mod_edit_users, g_mod_rename_users, g_mod_change_passwords, g_mod_ban_users, g_read_board, g_view_users, g_post_replies, g_post_topics, g_edit_posts, g_delete_posts, g_delete_topics, g_set_title, g_search, g_search_users, g_edit_subjects_interval, g_post_flood, g_search_flood) VALUES('Moderators', 'Moderator', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0)") or error(__FILE__, __LINE__); 
     1429        $db->query('INSERT INTO '.$db->prefix."groups (g_title, g_user_title, g_moderator, g_mod_edit_users, g_mod_rename_users, g_mod_change_passwords, g_mod_ban_users, g_read_board, g_view_users, g_post_replies, g_post_topics, g_edit_posts, g_delete_posts, g_delete_topics, g_set_title, g_search, g_search_users, g_send_email, g_edit_subjects_interval, g_post_flood, g_search_flood, g_email_flood) VALUES('Administrators', 'Administrator', 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0)") or error(__FILE__, __LINE__); 
     1430        $db->query('INSERT INTO '.$db->prefix."groups (g_title, g_user_title, g_moderator, g_mod_edit_users, g_mod_rename_users, g_mod_change_passwords, g_mod_ban_users, g_read_board, g_view_users, g_post_replies, g_post_topics, g_edit_posts, g_delete_posts, g_delete_topics, g_set_title, g_search, g_search_users, g_send_email, g_edit_subjects_interval, g_post_flood, g_search_flood, g_email_flood) VALUES('Guest', NULL, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0)") or error(__FILE__, __LINE__); 
     1431        $db->query('INSERT INTO '.$db->prefix."groups (g_title, g_user_title, g_moderator, g_mod_edit_users, g_mod_rename_users, g_mod_change_passwords, g_mod_ban_users, g_read_board, g_view_users, g_post_replies, g_post_topics, g_edit_posts, g_delete_posts, g_delete_topics, g_set_title, g_search, g_search_users, g_send_email, g_edit_subjects_interval, g_post_flood, g_search_flood, g_email_flood) VALUES('Members', NULL, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 300, 60, 30, 60)") or error(__FILE__, __LINE__); 
     1432        $db->query('INSERT INTO '.$db->prefix."groups (g_title, g_user_title, g_moderator, g_mod_edit_users, g_mod_rename_users, g_mod_change_passwords, g_mod_ban_users, g_read_board, g_view_users, g_post_replies, g_post_topics, g_edit_posts, g_delete_posts, g_delete_topics, g_set_title, g_search, g_search_users, g_send_email, g_edit_subjects_interval, g_post_flood, g_search_flood, g_email_flood) VALUES('Moderators', 'Moderator', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0)") or error(__FILE__, __LINE__); 
    14241433 
    14251434        // Insert guest and first admin user 
  • branches/punbb-1.3-dev/upload/lang/English/admin.php

    r1553 r1575  
    297297'Allow use search'                              =>      'Allow users to use the search feature.', 
    298298'Allow search users'                    =>      'Allow users to freetext search for users in the user list.', 
     299'Allow send email'                              =>      'Allow users to send e-mails to other users.', 
    299300'Restrictions'                                  =>      'Restrictions', 
    300301'Mod permissions'                               =>      'Moderator permissions', 
     
    306307'Search interval'                               =>      'Search flood interval', 
    307308'Search interval info'                  =>      'Number of seconds that users in this group have to wait between searches. Set to 0 to disable.', 
     309'Email flood interval'                  =>      'Email flood interval', 
     310'Email flood interval info'             =>      'Number of seconds that users in this group have to wait between e-mails. Set to 0 to disable.', 
    308311'Mods warning'                                  =>      'Please note that in order for a user in this group to have moderator abilities, he/she must be assigned to moderate one or more forums. This is done via the user administration page of the user\'s profile.', 
    309312'Remove group'                                  =>      'Remove group', 
  • branches/punbb-1.3-dev/upload/lang/English/misc.php

    r1534 r1575  
    1313'No e-mail message'                     =>      'You must enter a message.', 
    1414'Too long e-mail message'       =>      'Messages cannot be longer than '.PUN_MAX_POSTSIZE.' characters.', 
     15'Email flood'                           =>      'At least %s seconds have to pass between sent emails. Please wait a while and try sending again.', 
    1516'E-mail sent redirect'          =>      'E-mail sent. Redirecting 
', 
    1617'E-mail subject'                        =>      'Subject:', 
  • branches/punbb-1.3-dev/upload/misc.php

    r1560 r1575  
    132132else if (isset($_GET['email'])) 
    133133{ 
    134         if ($pun_user['is_guest']
     134        if ($pun_user['is_guest'] || $pun_user['g_send_email'] == '0'
    135135                message($lang_common['No permission']); 
    136136 
     
    176176                else if (strlen($message) > PUN_MAX_POSTSIZE) 
    177177                        $errors[] = $lang_misc['Too long e-mail message']; 
     178                if ($pun_user['last_email_sent'] != '' && (time() - $pun_user['last_email_sent']) < $pun_user['g_email_flood'] && (time() - $pun_user['last_email_sent']) >= 0) 
     179                        $errors[] = sprintf($lang_misc['Email flood'], $pun_user['g_email_flood']); 
    178180 
    179181                // Did everything go according to plan? 
     
    197199 
    198200                        pun_mail($recipient_email, $mail_subject, $mail_message, '"'.str_replace('"', '', $pun_user['username']).'" <'.$pun_user['email'].'>'); 
     201 
     202                        // Set the user's last_email_sent time 
     203                        $query = array( 
     204                                'UPDATE'        => 'users', 
     205                                'SET'           => 'last_email_sent='.time(), 
     206                                'WHERE'         => 'id='.$pun_user['id'], 
     207                                'PARAMS'        => array( 
     208                                        'LOW_PRIORITY'  => 1    // MySQL only 
     209                                ) 
     210                        ); 
     211 
     212                        ($hook = get_hook('mi_qr_update_last_email_sent')) ? eval($hook) : null; 
     213                        $db->query_build($query) or error(__FILE__, __LINE__); 
    199214 
    200215                        redirect(pun_htmlencode($_POST['redirect_url']), $lang_misc['E-mail sent redirect']); 
     
    284299                                        <label for="fld<?php echo ++$pun_page['fld_count'] ?>"> 
    285300                                                <span class="fld-label"><?php echo $lang_misc['E-mail message'] ?></span><br /> 
    286                                                 <span class="fld-input"><textarea id="fld<?php echo $pun_page['fld_count'] ?>" name="req_message" value="<?php echo(isset($_POST['req_message']) ? pun_htmlencode($_POST['req_message']) : '') ?>" rows="10" cols="95"></textarea></span> 
     301                                                <span class="fld-input"><textarea id="fld<?php echo $pun_page['fld_count'] ?>" name="req_message" rows="10" cols="95"><?php echo(isset($_POST['req_message']) ? pun_htmlencode($_POST['req_message']) : '') ?></textarea></span> 
    287302                                                <em class="req-text"><?php echo $lang_common['Required'] ?></em> 
    288303                                        </label> 
  • branches/punbb-1.3-dev/upload/profile.php

    r1572 r1575  
    12691269        $pun_page['user_actions'] = array(); 
    12701270 
    1271         if ($user['email_setting'] != '2' && !$pun_user['is_guest']
     1271        if ($user['email_setting'] != '2' && !$pun_user['is_guest'] && $pun_user['g_send_email'] == '1'
    12721272                $pun_page['user_actions'][] =  '<li><a href="'.pun_link($pun_url['email'], $id).'">'.$lang_common['Send forum e-mail'].'</a></li>'; 
    12731273 
     
    12841284        ); 
    12851285 
    1286         if ($user['email_setting'] == '0' && !$pun_user['is_guest']
     1286        if ($user['email_setting'] == '0' && !$pun_user['is_guest'] && $pun_user['g_send_email'] == '1'
    12871287                $pun_page['user_data'][] = '<li><strong>'.$lang_profile['E-mail'].'</strong> <span><a href="mailto:'.$user['email'].'" class="email">'.($pun_config['o_censoring'] == '1' ? censor_words($user['email']) : $user['email']).'</a></span></li>'; 
    12881288        else 
     
    14221422                        $pun_page['user_actions'][] = '<li><a href="'.pun_link($pun_url['change_email'], $id).'">'.$lang_profile['Change e-mail'].'</a></li>'; 
    14231423 
    1424                 if ($user['email_setting'] != '2' || $pun_user['is_admmod']
     1424                if (($user['email_setting'] != '2' || $pun_user['is_admmod']) && $pun_user['g_send_email'] == '1'
    14251425                        $pun_page['user_actions'][] = '<li><a href="'.pun_link($pun_url['email'], $id).'">'.$lang_profile['Send forum e-mail'].'</a></li>'; 
    14261426 
     
    14381438                ); 
    14391439 
    1440                 if ($user['email_setting'] == '0' && !$pun_user['is_guest']
     1440                if (($user['email_setting'] == '0' && !$pun_user['is_guest']) && $pun_user['g_send_email'] == '1'
    14411441                        $pun_page['user_data'][] = '<li><strong>'.$lang_profile['E-mail'].'</strong> <span><a href="mailto:'.$user['email'].'" class="email">'.($pun_config['o_censoring'] == '1' ? censor_words($user['email']) : $user['email']).'</a></span></li>'; 
    14421442                else 
  • branches/punbb-1.3-dev/upload/viewtopic.php

    r1562 r1575  
    381381                        if ($cur_post['url'] != '') 
    382382                                $pun_page['post_options'][] = '<a class="contact external" href="'.pun_htmlencode(($pun_config['o_censoring'] == '1') ? censor_words($cur_post['url']) : $cur_post['url']).'"><span>'.sprintf($lang_topic['Visit website'], pun_htmlencode($cur_post['username'])).'</span></a>'; 
    383                         if (($cur_post['email_setting'] == '0' && !$pun_user['is_guest']) || $pun_user['is_admmod']
     383                        if ((($cur_post['email_setting'] == '0' && !$pun_user['is_guest']) || $pun_user['is_admmod']) && $pun_user['g_send_email'] == '1'
    384384                                $pun_page['post_options'][] = '<a class="contact" href="mailto:'.$cur_post['email'].'"><span>'.$lang_common['E-mail'].'<span>&#160;'.pun_htmlencode($cur_post['username']).'</span></span></a>'; 
    385                         else if ($cur_post['email_setting'] == '1' && !$pun_user['is_guest']
     385                        else if ($cur_post['email_setting'] == '1' && !$pun_user['is_guest'] && $pun_user['g_send_email'] == '1'
    386386                                $pun_page['post_options'][] = '<a class="contact" href="'.pun_link($pun_url['email'], $cur_post['poster_id']).'"><span>'.$lang_common['E-mail'].'<span>&#160;'.pun_htmlencode($cur_post['username']).'</span></span></a>'; 
    387387                } 
    388388                else 
    389389                { 
    390                         if ($cur_post['poster_email'] != '' && !$pun_user['is_guest']
     390                        if ($cur_post['poster_email'] != '' && !$pun_user['is_guest'] && $pun_user['g_send_email'] == '1'
    391391                                $pun_page['post_options'][] = '<a class="contact" href="mailto:'.$cur_post['poster_email'].'"><span>'.$lang_common['E-mail'].'<span>&#160;'.pun_htmlencode($cur_post['username']).'</span></span></a>'; 
    392392                }