Esempio n. 1
0
     $message = $lang['Could_not_add_user'] . '<br /><br />' . sprintf($lang['Click_return_group'], '<a href="' . append_sid(CMS_PAGE_GROUP_CP . '?' . POST_GROUPS_URL . '=' . $group_id) . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid(CMS_PAGE_FORUM) . '">', '</a>');
     message_die(GENERAL_MESSAGE, $message);
 }
 $row['user_level'] = $row['user_level'] == JUNIOR_ADMIN ? ADMIN : $row['user_level'];
 if ($row['user_id'] == ANONYMOUS) {
     $redirect_url = append_sid(CMS_PAGE_GROUP_CP . '?' . POST_GROUPS_URL . '=' . $group_id);
     meta_refresh(3, $redirect_url);
     $message = $lang['Could_not_anon_user'] . '<br /><br />' . sprintf($lang['Click_return_group'], '<a href="' . append_sid(CMS_PAGE_GROUP_CP . '?' . POST_GROUPS_URL . '=' . $group_id) . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid(CMS_PAGE_FORUM) . '">', '</a>');
     message_die(GENERAL_MESSAGE, $message);
 }
 $sql = "SELECT ug.user_id, u.user_level, u.group_id, u.user_color, u.user_rank\n\t\t\t\t\tFROM " . USER_GROUP_TABLE . " ug, " . USERS_TABLE . " u\n\t\t\t\t\tWHERE u.user_id = " . $row['user_id'] . "\n\t\t\t\t\t\tAND ug.user_id = u.user_id\n\t\t\t\t\t\tAND ug.group_id = {$group_id}";
 $result = $db->sql_query($sql);
 if (!$db->sql_fetchrow($result)) {
     $sql = "INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending)\n\t\t\t\t\t\tVALUES (" . $row['user_id'] . ", {$group_id}, 0)";
     $db->sql_query($sql);
     update_user_color($row['user_id'], $group_color, $group_id, false, false);
     update_user_posts_details($row['user_id'], $group_color, '', false, false);
     if ($row['user_rank'] == '0' && $group_rank != '0') {
         $sql_users = "UPDATE " . USERS_TABLE . "\n\t\t\t\t\t\t\tSET user_rank = '" . $group_rank . "'\n\t\t\t\t\t\t\tWHERE user_id = '" . $row['user_id'] . "'";
         $db->sql_query($sql_users);
     }
     if ($row['user_level'] != ADMIN && $row['user_level'] != MOD && $group_info['auth_mod']) {
         $sql = "UPDATE " . USERS_TABLE . "\n\t\t\t\t\t\t\tSET user_level = " . MOD . "\n\t\t\t\t\t\t\tWHERE user_id = " . $row['user_id'];
         $db->sql_query($sql);
     }
     $db->clear_cache();
     // Get the group name
     $group_sql = "SELECT group_name\n\t\t\t\t\t\tFROM " . GROUPS_TABLE . "\n\t\t\t\t\t\tWHERE group_id = {$group_id}";
     $result = $db->sql_query($group_sql);
     $group_name_row = $db->sql_fetchrow($result);
     $db->sql_freeresult($result);
Esempio n. 2
0
    function sync_post_stats(&$mode, &$post_data, &$forum_id, &$topic_id, &$post_id, &$user_id)
    {
        global $db, $config;
        if (!function_exists('update_user_color') || !function_exists('update_user_posts_details')) {
            include IP_ROOT_PATH . 'includes/functions_groups.' . PHP_EXT;
        }
        $sign = $mode == 'delete' ? '- 1' : '+ 1';
        $forum_update_sql = "forum_posts = forum_posts {$sign}";
        $topic_update_sql = '';
        if ($mode == 'delete') {
            if ($post_data['last_post']) {
                if ($post_data['first_post']) {
                    $forum_update_sql .= ', forum_topics = forum_topics - 1';
                } else {
                    $topic_update_sql .= 'topic_replies = topic_replies - 1';
                    $topic_data = $this->get_first_last_post_id($topic_id);
                    if (!empty($topic_data['last_post_id'])) {
                        $topic_update_sql .= ', topic_last_post_id = ' . $topic_data['last_post_id'];
                    }
                }
                if ($post_data['last_topic']) {
                    $last_post_id = $this->get_forum_last_post_id($forum_id);
                    if (!empty($last_post_id)) {
                        $forum_update_sql .= $row['last_post_id'] ? ', forum_last_post_id = ' . $last_post_id : ', forum_last_post_id = 0';
                    }
                }
            } elseif ($post_data['first_post']) {
                $topic_data = $this->get_first_last_post_id($topic_id);
                if (!empty($topic_data['first_post_id'])) {
                    $topic_update_sql .= 'topic_replies = topic_replies - 1, topic_first_post_id = ' . $topic_data['first_post_id'];
                }
            } else {
                $topic_update_sql .= 'topic_replies = topic_replies - 1';
            }
        } elseif ($mode != 'poll_delete') {
            $forum_update_sql .= ", forum_last_post_id = {$post_id}" . ($mode == 'newtopic' ? ", forum_topics = forum_topics {$sign}" : "");
            $topic_update_sql = "topic_last_post_id = {$post_id}" . ($mode == 'reply' ? ", topic_replies = topic_replies {$sign}" : ", topic_first_post_id = {$post_id}");
        } else {
            // Shall we update poll fields for this topic?
            //$topic_update_sql .= 'topic_vote = 0';
        }
        $db->sql_transaction('begin');
        if ($mode != 'poll_delete') {
            $sql = "UPDATE " . FORUMS_TABLE . "\n\t\t\t\tSET {$forum_update_sql}\n\t\t\t\tWHERE forum_id = {$forum_id}";
            $db->sql_query($sql);
        }
        if ($topic_update_sql != '') {
            $sql = "UPDATE " . TOPICS_TABLE . "\n\t\t\t\tSET {$topic_update_sql}\n\t\t\t\tWHERE topic_id = {$topic_id}";
            $db->sql_query($sql);
        }
        if ($mode != 'poll_delete') {
            // Disable Post count - BEGIN
            $postcount = true;
            $sql = "SELECT forum_postcount\n\t\t\t\tFROM " . FORUMS_TABLE . "\n\t\t\t\tWHERE forum_id = " . $forum_id . "\n\t\t\t\t\tAND forum_postcount = 0";
            $result = $db->sql_query($sql);
            if ($row = $db->sql_fetchrow($result)) {
                $postcount = false;
            }
            // Disable Post count - END
            $this->sync_topic_details($topic_id, $forum_id, false, false);
            if ($postcount) {
                $sql = "UPDATE " . USERS_TABLE . "\n\t\t\t\t\tSET user_posts = user_posts {$sign}\n\t\t\t\t\tWHERE user_id = {$user_id}";
                $db->sql_query($sql);
                $db->sql_transaction('commit');
                if ($config['site_history']) {
                    $current_time = time();
                    $minutes = gmdate('is', $current_time);
                    $hour_now = $current_time - 60 * ($minutes[0] . $minutes[1]) - ($minutes[2] . $minutes[3]);
                    $sql = 'UPDATE ' . SITE_HISTORY_TABLE . ' SET ' . ($mode == 'newtopic' || $post_data['first_post'] ? 'new_topics=new_topics' : 'new_posts=new_posts') . $sign . ' WHERE date=' . $hour_now;
                    $db->sql_return_on_error(true);
                    $result = $db->sql_query($sql);
                    $db->sql_return_on_error(false);
                    if (!$result || !$db->sql_affectedrows()) {
                        $sql = 'INSERT IGNORE INTO ' . SITE_HISTORY_TABLE . ' (date, ' . ($mode == 'newtopic' || $post_data['first_post'] ? 'new_topics' : 'new_posts') . ')
							VALUES (' . $hour_now . ', "1")';
                        $db->sql_query($sql);
                    }
                }
                $sql = "SELECT ug.user_id, g.group_id as g_id, u.user_posts, u.group_id, u.user_color, g.group_count, g.group_color, g.group_count_max FROM (" . GROUPS_TABLE . " g, " . USERS_TABLE . " u)\n\t\t\t\t\t\tLEFT JOIN " . USER_GROUP_TABLE . " ug ON g.group_id = ug.group_id AND ug.user_id = '" . $user_id . "'\n\t\t\t\t\t\tWHERE u.user_id = '" . $user_id . "'\n\t\t\t\t\t\tAND g.group_single_user = '******'\n\t\t\t\t\t\tAND g.group_count_enable = '1'\n\t\t\t\t\t\tAND g.group_moderator <> '" . $user_id . "'";
                $result = $db->sql_query($sql);
                while ($group_data = $db->sql_fetchrow($result)) {
                    $user_already_added = empty($group_data['user_id']) ? false : true;
                    $user_add = $group_data['group_count'] == $group_data['user_posts'] && $user_id != ANONYMOUS ? true : false;
                    $user_remove = $group_data['group_count'] > $group_data['user_posts'] || $group_data['group_count_max'] < $group_data['user_posts'] ? true : false;
                    if ($user_add && !$user_already_added) {
                        update_user_color($user_id, $group_data['group_color'], $group_data['g_id'], false, false);
                        update_user_posts_details($user_id, $group_data['group_color'], '', false, false);
                        empty_cache_folders(USERS_CACHE_FOLDER);
                        //user join a autogroup
                        $sql = "INSERT INTO " . USER_GROUP_TABLE . " (group_id, user_id, user_pending)\n\t\t\t\t\t\t\tVALUES (" . $group_data['g_id'] . ", {$user_id}, '0')";
                        $db->sql_query($sql);
                    } elseif ($user_already_added && $user_remove) {
                        update_user_color($user_id, $config['active_users_color'], 0);
                        update_user_posts_details($user_id, '', '', false, false);
                        empty_cache_folders(USERS_CACHE_FOLDER);
                        //remove user from auto group
                        $sql = "DELETE FROM " . USER_GROUP_TABLE . "\n\t\t\t\t\t\t\tWHERE group_id = '" . $group_data['g_id'] . "'\n\t\t\t\t\t\t\tAND user_id = '" . $user_id . "'";
                        $db->sql_query($sql);
                    }
                }
            }
            $this->sync_cache(0, 0);
            board_stats();
            cache_tree(true);
        }
        return;
    }
Esempio n. 3
0
 function autogroup($user_id)
 {
     global $db, $cache, $config, $lang;
     if ($user_id != ANONYMOUS) {
         if (!function_exists('update_user_color') || !function_exists('update_user_posts_details')) {
             include IP_ROOT_PATH . 'includes/functions_groups.' . PHP_EXT;
         }
         $sql = "SELECT ug.user_id, g.group_id as g_id, u.user_posts, u.group_id, u.user_color, g.group_count, g.group_color, g.group_count_max FROM (" . GROUPS_TABLE . " g, " . USERS_TABLE . " u)\n\t\t\t\t\tLEFT JOIN " . USER_GROUP_TABLE . " ug ON g.group_id = ug.group_id AND ug.user_id = '" . $user_id . "'\n\t\t\t\t\tWHERE u.user_id = '" . $user_id . "'\n\t\t\t\t\tAND g.group_single_user = '******'\n\t\t\t\t\tAND g.group_count_enable = '1'\n\t\t\t\t\tAND g.group_moderator <> '" . $user_id . "'";
         $result = $db->sql_query($sql);
         $user_cache_refresh = false;
         while ($group_data = $db->sql_fetchrow($result)) {
             $user_already_added = empty($group_data['user_id']) ? false : true;
             $user_add = $group_data['user_posts'] >= $group_data['group_count'] && $group_data['user_posts'] < $group_data['group_count_max'] ? true : false;
             $user_remove = $group_data['user_posts'] < $group_data['group_count'] || $group_data['user_posts'] >= $group_data['group_count_max'] ? true : false;
             if ($user_add && !$user_already_added) {
                 update_user_color($user_id, $group_data['group_color'], $group_data['g_id'], false, false);
                 update_user_posts_details($user_id, $group_data['group_color'], '', false, false);
                 $user_cache_refresh = true;
                 //user join a autogroup
                 $sql = "INSERT INTO " . USER_GROUP_TABLE . " (group_id, user_id, user_pending)\n\t\t\t\t\t\tVALUES (" . $group_data['g_id'] . ", {$user_id}, '0')";
                 $db->sql_query($sql);
             } elseif ($user_already_added && $user_remove) {
                 update_user_color($user_id, $config['active_users_color'], 0);
                 update_user_posts_details($user_id, '', '', false, false);
                 $user_cache_refresh = true;
                 //remove user from auto group
                 $sql = "DELETE FROM " . USER_GROUP_TABLE . "\n\t\t\t\t\t\tWHERE group_id = '" . $group_data['g_id'] . "'\n\t\t\t\t\t\tAND user_id = '" . $user_id . "'";
                 $db->sql_query($sql);
             }
         }
         $db->sql_freeresult($result);
         if (!empty($user_cache_refresh)) {
             empty_cache_folders(USERS_CACHE_FOLDER);
         }
     }
     return;
 }
Esempio n. 4
0
/**
* Add user(s) to group
*
* @return mixed false if no errors occurred
*/
function group_user_add($group_id, $user_id, $clear_cache = false, $is_autogroup_enable = false)
{
    // 2 => User already member
    // 1 => User added
    // 0 => User not added
    global $db, $cache, $config, $lang;
    $this_userdata = get_userdata($user_id);
    $sql = "SELECT * FROM " . USER_GROUP_TABLE . " ug\n\t\t\tWHERE ug.user_id = '" . (int) $user_id . "'\n\t\t\t\tAND ug.group_id = '" . (int) $group_id . "'";
    $result = $db->sql_query($sql);
    if ($row = $db->sql_fetchrow($result)) {
        $db->sql_freeresult($result);
        return 2;
    }
    $groups_data = get_groups_data(false, false, array($group_id));
    if (empty($groups_data)) {
        return 0;
    }
    $this_group_data = array();
    foreach ($groups_data as $group_data) {
        $this_group_data = $group_data;
        $group_rank = $group_data['group_rank'];
        $group_color = $group_data['group_color'];
    }
    $sql = "INSERT INTO " . USER_GROUP_TABLE . " (group_id, user_id, user_pending) VALUES (" . (int) $group_id . ", " . (int) $user_id . ", 0)";
    $result = $db->sql_query($sql);
    if (!empty($group_color) && $group_color != $this_userdata['user_color']) {
        update_user_color($user_id, $group_color, $group_id, false, false);
        update_user_posts_details($user_id, $group_color, '', false, false);
    }
    if (!empty($group_rank) && empty($this_userdata['user_rank'])) {
        update_user_rank_simple($user_id, $group_rank, false);
    }
    if ($clear_cache) {
        $db->clear_cache();
    }
    return 1;
}