コード例 #1
0
function spa_save_forums_merge()
{
    check_admin_referer('forum-adminform_mergeforums', 'forum-adminform_mergeforums');
    $source = $target = 0;
    if (isset($_POST['source'])) {
        $source = (int) $_POST['source'];
    }
    if (isset($_POST['target'])) {
        $target = (int) $_POST['target'];
    }
    if (empty($source) || empty($target) || $source == $target) {
        return spa_text('Selections invalid');
    }
    $sourceForum = spdb_table(SFFORUMS, "forum_id={$source}", 'row');
    $targetForum = spdb_table(SFFORUMS, "forum_id={$target}", 'row');
    # 1 - Move sub-forums
    if (!empty($sourceForum->children)) {
        spdb_query("UPDATE " . SFFORUMS . " SET parent={$target} WHERE parent={$source}");
    }
    # 2 - Change forum ids in requirted tables
    spdb_query("UPDATE " . SFTOPICS . " SET forum_id={$target} WHERE forum_id={$source}");
    spdb_query("UPDATE " . SFPOSTS . " SET forum_id={$target} WHERE forum_id={$source}");
    spdb_query("UPDATE " . SFTRACK . " SET forum_id={$target} WHERE forum_id={$source}");
    spdb_query("UPDATE " . SFWAITING . " SET forum_id={$target} WHERE forum_id={$source}");
    # 3 - Delete forum id rows in following tables
    spdb_query("DELETE FROM " . SFPERMISSIONS . " WHERE forum_id={$source}");
    # 4 - Run clean up operations
    sp_reset_memberships();
    sp_reset_auths();
    sp_update_post_urls($sourceForum->forum_slug, $targetForum->forum_slug);
    sp_build_forum_index($target);
    # 5 - Delete the old forum record
    spdb_query("DELETE FROM " . SFFORUMS . " WHERE forum_id={$source}");
    spa_clean_forum_children();
    spa_resequence_forums($targetForum->group_id, 0);
    # 6 - Update Sitemap
    do_action('sm_rebuild');
    # 7 - Update Stats
    do_action('sph_stats_cron');
    # 8 - Let plugins in on the secret
    do_action('sph_merge_forums', $source, $target);
    # clear out group cache tpo enable change_user
    sp_flush_cache('group');
    $mess = spa_text('Forum Merge Completed');
    return $mess;
}
コード例 #2
0
function spa_save_usergroups_delete_usergroup()
{
    check_admin_referer('forum-adminform_usergroupdelete', 'forum-adminform_usergroupdelete');
    $usergroup_id = sp_esc_int($_POST['usergroup_id']);
    # dont allow updates to the default user groups
    $usergroup = spa_get_usergroups_row($usergroup_id);
    if ($usergroup->usergroup_locked) {
        $mess = spa_text('Sorry, the default User Groups cannot be deleted');
        return $mess;
    }
    # remove all memberships for this user group
    spdb_query("DELETE FROM " . SFMEMBERSHIPS . " WHERE usergroup_id=" . $usergroup_id);
    # remove any permission sets using this user group
    $permissions = spdb_table(SFPERMISSIONS, "usergroup_id={$usergroup_id}");
    if ($permissions) {
        foreach ($permissions as $permission) {
            spa_remove_permission_data($permission->permission_id);
        }
    }
    # remove any group default permissions using this user group
    spdb_query("DELETE FROM " . SFDEFPERMISSIONS . " WHERE usergroup_id=" . $usergroup_id);
    # remove the user group
    spdb_query("DELETE FROM " . SFMEMBERSHIPS . " WHERE usergroup_id=" . $usergroup_id);
    $success = spdb_query("DELETE FROM " . SFUSERGROUPS . " WHERE usergroup_id=" . $usergroup_id);
    if ($success == false) {
        $mess = spa_text('User group delete failed');
    } else {
        $mess = spa_text('User group deleted');
        # reset auths and memberships for everyone
        sp_reset_memberships();
        sp_reset_auths();
        do_action('sph_usergroup_del', $usergroup_id);
    }
    return $mess;
}
コード例 #3
0
$batchSQL = sp_esc_int($_GET['batchNum']);
$where = ' WHERE admin=0';
if ($_GET['ignoremods']) {
    $where .= ' AND moderator=0';
}
$users = spdb_select('col', 'SELECT user_id FROM ' . SFMEMBERS . $where . ' ORDER BY user_id LIMIT ' . $startSQL . ', ' . $batchSQL);
if ($users) {
    $value = sp_get_sfmeta('default usergroup', 'sfmembers');
    $defaultUG = $value[0]['meta_value'];
    foreach ($users as $thisUser) {
        if ($_GET['mapoption'] == 2) {
            spdb_query('DELETE FROM ' . SFMEMBERSHIPS . ' WHERE user_id=' . $thisUser);
        }
        $user = new WP_User($thisUser);
        if (!empty($user->roles) && is_array($user->roles)) {
            foreach ($user->roles as $role) {
                $value = sp_get_sfmeta('default usergroup', $role);
                if (!empty($value)) {
                    $ug = $value[0]['meta_value'];
                } else {
                    $ug = $defaultUG;
                }
                sp_add_membership($ug, $thisUser);
            }
        }
    }
    # clean up
    sp_reset_memberships();
    sp_reset_auths();
}
die;
コード例 #4
0
function sp_remove_membership($usergroup_id, $user_id)
{
    spdb_query('DELETE FROM ' . SFMEMBERSHIPS . " WHERE user_id={$user_id} AND usergroup_id={$usergroup_id}");
    # reset auths and memberships for added user
    sp_reset_memberships($user_id);
    sp_reset_auths($user_id);
    sp_update_member_moderator_flag($user_id);
    return true;
}
コード例 #5
0
function spa_save_permissions_delete_role()
{
    check_admin_referer('forum-adminform_roledelete', 'forum-adminform_roledelete');
    $role_id = sp_esc_int($_POST['role_id']);
    # remove all permission set that use the role we are deleting
    $permissions = spdb_table(SFPERMISSIONS, "permission_role={$role_id}");
    if ($permissions) {
        foreach ($permissions as $permission) {
            spa_remove_permission_data($permission->permission_id);
        }
    }
    # reset auths and memberships for everyone
    sp_reset_memberships();
    sp_reset_auths();
    # remove the permission set role
    $success = spdb_query('DELETE FROM ' . SFROLES . " WHERE role_id={$role_id}");
    if ($success == false) {
        $mess = spa_text('Permission det deletion failed');
    } else {
        do_action('sph_perms_del', $role_id);
        $mess = spa_text('Permission set deleted');
    }
    return $mess;
}
コード例 #6
0
            }
        }
    }
}
if ($action == 'del') {
    check_admin_referer('forum-adminform_memberdel', 'forum-adminform_memberdel');
    $usergroup_id = sp_esc_int($_GET['usergroupid']);
    $new_usergroup_id = $_GET['usergroup_id'];
    if (isset($_GET['dmid'])) {
        $user_id_list = array_unique($_GET['dmid']);
    }
    # make sure not moving to same user group
    if (!isset($user_id_list) || $usergroup_id == $new_usergroup_id) {
        die;
    }
    for ($x = $startNum; $x < $startNum + $batchNum; $x++) {
        if (isset($user_id_list[$x])) {
            $user_id = sp_esc_int($user_id_list[$x]);
            $success = spdb_query('DELETE FROM ' . SFMEMBERSHIPS . " WHERE user_id={$user_id} AND usergroup_id={$usergroup_id}");
            if ($new_usergroup_id != -1) {
                $success = sp_add_membership($new_usergroup_id, $user_id);
            }
            # reset auths and memberships for added user
            sp_reset_memberships($user_id);
            sp_reset_auths($user_id);
            # update mod flag
            sp_update_member_moderator_flag($user_id);
        }
    }
}
die;
コード例 #7
0
function spa_save_admins_newadmin_data()
{
    check_admin_referer('forum-adminform_sfaddadmins', 'forum-adminform_sfaddadmins');
    if (isset($_POST['member_id'])) {
        $newadmins = array_unique($_POST['member_id']);
    } else {
        $mess = spa_text('No users selected!');
        return $mess;
    }
    if (isset($_POST['add-opts'])) {
        $opts = $_POST['add-opts'];
    } else {
        $opts = '';
    }
    if (isset($_POST['add-forums'])) {
        $forums = $_POST['add-forums'];
    } else {
        $forums = '';
    }
    if (isset($_POST['add-ugs'])) {
        $ugs = $_POST['add-ugs'];
    } else {
        $ugs = '';
    }
    if (isset($_POST['add-perms'])) {
        $perms = $_POST['add-perms'];
    } else {
        $perms = '';
    }
    if (isset($_POST['add-comps'])) {
        $comps = $_POST['add-comps'];
    } else {
        $comps = '';
    }
    if (isset($_POST['add-users'])) {
        $users = $_POST['add-users'];
    } else {
        $users = '';
    }
    if (isset($_POST['add-profiles'])) {
        $profiles = $_POST['add-profiles'];
    } else {
        $profiles = '';
    }
    if (isset($_POST['add-admins'])) {
        $admins = $_POST['add-admins'];
    } else {
        $admins = '';
    }
    if (isset($_POST['add-tools'])) {
        $tools = $_POST['add-tools'];
    } else {
        $tools = '';
    }
    if (isset($_POST['add-plugins'])) {
        $plugins = $_POST['add-plugins'];
    } else {
        $plugins = '';
    }
    if (isset($_POST['add-themes'])) {
        $themes = $_POST['add-themes'];
    } else {
        $themes = '';
    }
    if (isset($_POST['add-integration'])) {
        $integration = $_POST['add-integration'];
    } else {
        $integration = '';
    }
    $added = false;
    for ($index = 0; $index < count($newadmins); $index++) {
        # get user index and sanitize
        $uid = intval($newadmins[$index]);
        $user = new WP_User(sp_esc_int($uid));
        if ($opts == 'on') {
            $user->add_cap('SPF Manage Options');
        }
        if ($forums == 'on') {
            $user->add_cap('SPF Manage Forums');
        }
        if ($ugs == 'on') {
            $user->add_cap('SPF Manage User Groups');
        }
        if ($perms == 'on') {
            $user->add_cap('SPF Manage Permissions');
        }
        if ($comps == 'on') {
            $user->add_cap('SPF Manage Components');
        }
        if ($users == 'on') {
            $user->add_cap('SPF Manage Users');
        }
        if ($profiles == 'on') {
            $user->add_cap('SPF Manage Profiles');
        }
        if ($admins == 'on') {
            $user->add_cap('SPF Manage Admins');
        }
        if ($tools == 'on') {
            $user->add_cap('SPF Manage Toolbox');
        }
        if ($plugins == 'on') {
            $user->add_cap('SPF Manage Plugins');
        }
        if ($themes == 'on') {
            $user->add_cap('SPF Manage Themes');
        }
        if ($integration == 'on') {
            $user->add_cap('SPF Manage Integration');
        }
        $newadmin = $opts == 'on' || $forums == 'on' || $ugs == 'on' || $perms == 'on' || $comps == 'on' || $users == 'on' || $profiles == 'on' || $admins == 'on' || $tools == 'on' || $plugins == 'on' || $themes == 'on' || $integration == 'on';
        $newadmin = apply_filters('sph_admin_caps_new', $newadmin, $user);
        if ($newadmin) {
            $added = true;
            # flag as admin with remove moderator flag
            sp_update_member_item($uid, 'admin', 1);
            sp_update_member_item($uid, 'moderator', 0);
            # admin default options
            $sfadminoptions = array();
            $sfadminoptions['sfnotify'] = false;
            $sfadminoptions['notify-edited'] = false;
            $sfadminoptions['bypasslogout'] = false;
            sp_update_member_item($uid, 'admin_options', $sfadminoptions);
            # remove any usergroup permissions
            spdb_query('DELETE FROM ' . SFMEMBERSHIPS . " WHERE user_id={$uid}");
            do_action('sph_admin_new_admin', $uid);
        }
        # reset auths and memberships for new admins
        sp_reset_memberships($uid);
        sp_reset_auths($uid);
    }
    do_action('sph_admin_new_save');
    if ($added) {
        $mess = spa_text('New admins added!');
    } else {
        $mess = spa_text('No data changed!');
    }
    return $mess;
}