function sp_response($section, $die = true, $status = 'success', $error = '') { global $wpdb; $response = array('status' => '', 'type' => '', 'section' => '', 'response' => '', 'error' => ''); # log the build section and status in the response echo "Build upgrade section {$section} executing. Status: {$status} <br />"; if ($status == 'error' && !empty($error)) { echo "Error: {$error} <br />"; } # build the response $response['status'] = $status; $response['type'] = 'upgrade'; $response['section'] = $section; $response['error'] = $error; $response['response'] = ob_get_contents(); # save as log meta data if table exists! (Need to check if installed yet sadly) $go = $wpdb->get_var("SHOW TABLES LIKE '" . SFLOGMETA . "'"); if ($go) { $sql = ' INSERT INTO ' . SFLOGMETA . " (version, log_data)\n\t\t\tVALUES (\n\t\t\t'" . SPVERSION . "',\n\t\t\t'" . serialize($response) . "')"; spdb_query($sql); } ob_end_clean(); # send the response (mark with tags so we can extract only the response) echo '%%%marker%%%'; print json_encode($response); echo '%%%marker%%%'; # and if this is the last update in build finish off... if (SPBUILD == $section) { # let plugins know do_action('sph_upgrade_done', SPBUILD); # Finished Upgrades =============================================================================== sp_log_event(SPRELEASE, SPVERSION, SPBUILD); sp_update_permalink(true); delete_option('sfInstallID'); # use wp option table # and some final cleanuop tasks sp_reset_auths(); sp_clear_combined_css('all'); sp_clear_combined_css('mobile'); sp_clear_combined_css('tablet'); sp_clear_combined_scripts('desktop'); sp_clear_combined_scripts('mobile'); sp_clear_combined_scripts('tablet'); sp_flush_cache('all'); sp_reset_member_plugindata(); } if ($die) { die; } }
function sp_deactivate_auth($name) { $success = spdb_query('UPDATE ' . SFAUTHS . " SET active=0 WHERE auth_name='{$name}'"); if ($success) { sp_reset_auths(); } return $success; }
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; }
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_housekeeping_data() { check_admin_referer('forum-adminform_housekeeping', 'forum-adminform_housekeeping'); $mess = ''; if (isset($_POST['rebuild-fidx'])) { $forumid = $_POST['forum_id']; if (is_numeric($forumid)) { $topics = spdb_table(SFTOPICS, "forum_id={$forumid}"); if ($topics) { include_once SF_PLUGIN_DIR . '/forum/database/sp-db-management.php'; foreach ($topics as $topic) { sp_build_post_index($topic->topic_id); } # after reubuilding post indexes, rebuild the forum indexes sp_build_forum_index($forumid); do_action('sph_toolbox_housekeeping_forum_index'); $mess = spa_text('Forum indexes rebuilt'); } else { $mess = spa_text('Forum index rebuild failed - no topics in selected forum'); } } else { $mess = spa_text('Forum index rebuild failed - no forum selected'); } } if (isset($_POST['transient-cleanup'])) { include_once SF_PLUGIN_DIR . '/forum/database/sp-db-management.php'; sp_transient_cleanup(); do_action('sph_toolbox_housekeeping_transient'); $mess = spa_text('WP transients cleaned'); } if (isset($_POST['clean-newposts'])) { $days = isset($_POST['sfdays']) ? max(sp_esc_int($_POST['sfdays']), 0) : 30; $users = spdb_select('col', "SELECT user_id FROM " . SFMEMBERS . " WHERE lastvisit < DATE_SUB(CURDATE(), INTERVAL " . $days . " DAY)"); if ($users) { foreach ($users as $user) { spdb_query('UPDATE ' . SFMEMBERS . " SET newposts='a:1:{i:0;i:0;}' WHERE user_id={$user}"); } } do_action('sph_toolbox_housekeeping_newpost'); $mess = spa_text('New posts lists cleaned'); } if (isset($_POST['postcount-cleanup'])) { spdb_query('UPDATE ' . SFMEMBERS . ' SET posts = (SELECT COUNT(*) FROM ' . SFPOSTS . ' WHERE ' . SFPOSTS . '.user_id = ' . SFMEMBERS . '.user_id)'); # force stats to update do_action('sph_stats_cron'); do_action('sph_toolbox_housekeeping_postcount'); $mess = spa_text('User post counts calculated'); } if (isset($_POST['reset-tabs'])) { # clear out current tabs $tabs = sp_get_sfmeta('profile', 'tabs'); sp_delete_sfmeta($tabs[0]['meta_id']); # start adding new ones spa_new_profile_setup(); do_action('sph_toolbox_housekeeping_profile_tabs'); $mess = spa_text('Profile tabs reset'); } if (isset($_POST['reset-auths'])) { sp_reset_auths(); do_action('sph_toolbox_housekeeping_auths'); $mess = spa_text('Auths caches cleaned'); } if (isset($_POST['reset-plugin-data'])) { sp_reset_member_plugindata(); do_action('sph_toolbox_housekeeping_plugindata'); $mess = spa_text('Users Plugin Data reset'); } if (isset($_POST['reset-combinedcss'])) { sp_clear_combined_css('all'); sp_clear_combined_css('mobile'); sp_clear_combined_css('tablet'); do_action('sph_toolbox_housekeeping_ccombined_css'); $mess = spa_text('Combined CSS cache file removed'); } if (isset($_POST['reset-combinedjs'])) { sp_clear_combined_scripts('desktop'); sp_clear_combined_scripts('mobile'); sp_clear_combined_scripts('tablet'); do_action('sph_toolbox_housekeeping_combined_js'); $mess = spa_text('Combined scripts cache files removed'); } if (isset($_POST['flushcache'])) { sp_flush_cache('all'); do_action('sph_toolbox_housekeeping_flush_cache'); $mess = spa_text('General cache flushed'); } do_action('sph_toolbox_housekeeping_save'); 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_new_auth() { check_admin_referer('forum-adminform_authnew', 'forum-adminform_authnew'); # create the auth if (!empty($_POST['auth_name'])) { $active = isset($_POST['auth_active']) ? 1 : 0; $ignored = isset($_POST['auth_guests']) ? 1 : 0; $enabling = isset($_POST['auth_enabling']) ? 1 : 0; $result = sp_add_auth(sp_filter_title_save($_POST['auth_name']), sp_filter_title_save($_POST['auth_desc']), $active, $ignored, $enabling); if ($result) { # reset the auths to account for new auth sp_reset_auths(); $mess = spa_text('New auth added'); } else { $mess = spa_text('New auth failed - duplicate auth?'); } } else { $mess = spa_text('New auth failed - missing data'); } 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; }