Файл: admin/module_update_user_points.php
Строк: 107
<?php
/***************************************************************************
 *                           ©  KaspeR
 *                            -------------------
 ***************************************************************************/
 
define('IN_PHPBB', 1);
$points_config['points_name'] = isset($points_config['points_name']) ? $points_config['points_name'] : 'Points';
//
// First we do the setmodules stuff for the admin cp.
//
if( !empty($setmodules) )
{
    $filename = basename(__FILE__);
    $menu_name = sprintf($lang['Points_update_user'], $points_config['points_name']);
    $module['Points_sys_settings'][$menu_name] = $filename;
    return;
}
//
// Load default header
//
$phpbb_root_path = './../';
require($phpbb_root_path . 'extension.inc');
require('./pagestart.' . $phpEx);
$confirm = (isset($HTTP_POST_VARS['confirm'])) ? TRUE : FALSE;
if (!$confirm)
{
    $template->set_filenames(array(
        'confirm' => 'confirm_body.tpl')
    );
    $template->assign_vars(array(
        'MESSAGE_TITLE'    => sprintf($lang['Points_update_user'], $points_config['points_name']),
        'MESSAGE_TEXT'    => sprintf($lang['Confirm_points_update'], $points_config['points_name']),
        'L_YES'            => $lang['Yes'],
        'L_NO'            => $lang['No'],
        'S_CONFIRM_ACTION'    => append_sid('module_update_user_points.' . $phpEx),
        'S_HIDDEN_FIELDS'    => '')
    );
    $template->pparse('confirm');
    
    include('./page_footer_admin.'.$phpEx);
    exit;
}
$sql = "SELECT user_id 
    FROM " . USERS_TABLE . " 
    WHERE user_id <> " . ANONYMOUS;
if (!$result = $db->sql_query($sql))
{
    message_die(GENERAL_ERROR, 'Could not obtain the user information!', '', __LINE__, __FILE__, $sql);
}
$users = $db->sql_fetchrowset($result);
$db->sql_freeresult($result);
$total_users = count($users);
for($i = 0; $i < $total_users; $i++)
{
    $user_id = $users[$i]['user_id'];
    $sql = 'SELECT COUNT(u.user_id) as all_posts 
        FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t, ' . FORUMS_TABLE . ' f, ' . USERS_TABLE . ' u
        WHERE p.topic_id = t.topic_id AND t.forum_id = f.forum_id
        AND f.points_disabled = 0
        AND p.poster_id = ' . $user_id . '
        AND u.user_id = p.poster_id
        GROUP BY u.user_id';
    if (!$result = $db->sql_query($sql))
    {
        message_die(GENERAL_ERROR, 'Could not obtain the posts information!', '', __LINE__, __FILE__, $sql);
    }
    $all_posts = $db->sql_fetchrow($result);
    $db->sql_freeresult($result);
    
    $sql = 'SELECT COUNT(u.user_id) as total_topics 
        FROM ' . TOPICS_TABLE . ' t, ' . FORUMS_TABLE . ' f, ' . USERS_TABLE . ' u
        WHERE t.forum_id = f.forum_id
        AND f.points_disabled = 0
        AND u.user_id = t.topic_poster
        AND t.topic_poster = ' . $user_id . '
        GROUP BY u.user_id';
    if (!$result = $db->sql_query($sql))
    {
        message_die(GENERAL_ERROR, 'Could not obtain the topics information!', '', __LINE__, __FILE__, $sql);
    }
    $total_topics = $db->sql_fetchrow($result);
    $db->sql_freeresult($result);
    $total_posts = $all_posts['all_posts'] - $total_topics['total_topics'];
    $total_topics = $total_topics['total_topics'];
    $points = 0;
    $points = $points + ($total_posts * $points_config['points_reply']);
    $points = $points + ($total_topics * $points_config['points_topic']);
    $points = $points + $points_config['points_register'];
    $sql = "UPDATE " . USERS_TABLE . " 
        SET user_points = $points 
        WHERE user_id = $user_id";
    if (!$db->sql_query($sql))
    {
        message_die(GENERAL_ERROR, 'Could not update the user points!', '', __LINE__, __FILE__, $sql);
    }
}
message_die(GENERAL_MESSAGE, '<br /><br />' . sprintf($lang['Points_user_updated'], $points_config['points_name']). '<br /><br />');
?>