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; }
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; }
$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;
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; }
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; }
} } } } 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;
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; }