'moderate')); } function bbmodsuite_banplus_uninstall() { bb_delete_option('bbmodsuite_banplus_current_bans'); bb_delete_option('bbmodsuite_banplus_options'); } function bbmodsuite_banplus_set_ban($user_id, $type = 'temp', $length = 86400, $notes = '') { // Default 1 day. Returns true if action was unnecessary or completed successfully and false on error. $the_options = bb_get_option('bbmodsuite_banplus_options'); if (!bb_current_user_can($the_options['min_level'])) return false; $user_id = bb_get_user_id($user_id); if (!$user_id) return false; if ($user_id === bb_get_current_user_info('ID')) return false; $user = class_exists('BP_User') ? new BP_User($user_id) : new WP_User($user_id); if (($user->has_cap('moderate') && !bb_current_user_can('administrate')) || ($user->has_cap('administrate') && !bb_current_user_can('use_keys'))) return false; $current_bans = bb_get_option('bbmodsuite_banplus_current_bans'); if ($type === 'unban') { if (!isset($current_bans[$user_id])) return true; unset($current_bans[$user_id]); bb_update_option('bbmodsuite_banplus_current_bans', $current_bans); return true; } $length = (int) $length; if ($length <= 0) return false; $until = time() + $length; if (!in_array($type, bbmodsuite_banplus_get_ban_types())) return false; if ($current_bans[$user_id]['type'] === $type && $current_bans[$user_id]['length'] === $length) return true; if (isset($current_bans[$user_id])) return false; $notes = bb_autop(htmlspecialchars(trim($notes))); $current_bans[$user_id] = array( 'type' => $type, 'length' => $length, 'on' => time(), 'until' => $until, 'banned_by' => bb_get_current_user_info('ID'), 'notes' => $notes ); bb_update_option('bbmodsuite_banplus_current_bans', $current_bans); return true; } function bbmodsuite_banplus_init() { $current_bans = (array) bb_get_option('bbmodsuite_banplus_current_bans'); $changed = false; foreach ($current_bans as $user_id => $ban) { if ($ban['until'] < time()) { unset($current_bans[$user_id]); $changed = true; } } if ($changed) bb_update_option('bbmodsuite_banplus_current_bans', $current_bans); } bbmodsuite_banplus_init(); function bbmodsuite_banplus_maybe_block_user() { $current_bans = bb_get_option('bbmodsuite_banplus_current_bans'); if (!empty($current_bans[bb_get_current_user_info('ID')])) { switch ($current_bans[bb_get_current_user_info('ID')]['type']) { case 'temp': bb_die(sprintf(__('You are banned from this forum until %s from now. The person who banned you said the reason was: %s', 'bbpress-moderation-suite'), bb_since(time() - ($current_bans[bb_get_current_user_info('ID')]['until'] - time()), true), $current_bans[bb_get_current_user_info('ID')]['notes'])); break; } } } bbmodsuite_banplus_maybe_block_user(); function bbmodsuite_banplus_get_ban_types() { global $bbmodsuite_active_plugins; $types = array('temp'); if (isset($bbmodsuite_active_plugins['probation'])) $types[] = 'probation'; return $types; } function bbmodsuite_ban_plus_admin_css() { ?>

$ban) { $unban_link = attribute_escape( bb_nonce_url(bb_get_uri( 'bb-admin/admin-base.php', array( 'page' => 'unban_user', 'user' => $user_id, 'plugin' => 'bbpress_moderation_suite_ban_plus' ), BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN ), 'bbmodsuite-banplus-unban_' . $user_id) ); ?> >