function approve_user_registration_dashboard() { global $page, $bb_current_menu; $waiting_user = new BB_Users_By_Role('waitingapproval'); if ($bb_current_menu[0] == 'Dashboard' && $waiting_user->total_users_for_query > 0) { ?> <div class="wrap"><div class="dashboard left"> <h3><?php _e('Users waiting for approval'); ?> </h3> <ul> <li><a href="<?php echo bb_get_option('path') . 'bb-admin/' . bb_get_admin_tab_link('approve_user_registration_admin_page'); ?> "><?php echo $waiting_user->total_users_for_query . ($waiting_user->total_users_for_query == 1 ? ' user' : ' users') . ' waiting for approval'; ?> </a> </li> </ul> </div></div> <div style="clear: both;"></div> <?php } }
function bb_admin_menu() { global $bb_menu, $bb_submenu, $bb_current_menu, $bb_current_submenu; if (!is_array($bb_menu) || !count($bb_menu)) { return ''; } $r = "\t\t\t" . '<ul id="bbAdminMenu">' . "\n"; foreach ($bb_menu as $key => $m) { if (!bb_current_user_can($m[1])) { continue; } $class = 'bb-menu'; if (isset($m[3])) { $class .= ' ' . $m[3]; } $id = ''; if (isset($m[4])) { $id .= ' id="' . $m[4] . '"'; } $m[0] = esc_html($m[0]); if ($m[2] === 'separator') { if ('f' == bb_get_user_setting('fm')) { $href = '?foldmenu=0'; } else { $href = '?foldmenu=1'; } $m[0] = '<br />'; $class .= ' bb-menu-separator'; } elseif (strpos($m[2], 'http://') === 0 || strpos($m[2], 'https://') === 0) { $href = esc_url($m[2]); $class .= ' bb-menu-external'; } else { $href = esc_url(bb_get_option('path') . 'bb-admin/' . bb_get_admin_tab_link($m[2])); } if ($m[2] == $bb_current_menu[2]) { $class .= ' bb-menu-current'; } $sr = ''; if ($m[2] !== 'separator' && isset($bb_submenu[$m[2]]) && is_array($bb_submenu[$m[2]]) && count($bb_submenu[$m[2]])) { $sr .= "\t\t\t\t\t" . '<div class="bb-menu-sub-wrap"><span>' . $m[0] . '</span>' . "\n"; $sr .= "\t\t\t\t\t\t" . '<ul>' . "\n"; $sc = 0; foreach ($bb_submenu[$m[2]] as $skey => $sm) { if (!bb_current_user_can($sm[1])) { continue; } if ($sc === 0 && $sm[2] === $m[2]) { $no_submenu = true; } if ($sc > 0) { $no_submenu = false; } $sc++; $sclass = 'bb-menu-sub'; if (isset($sm[3])) { $sclass .= ' ' . $sm[3]; } if (strpos($sm[2], 'http://') === 0 || strpos($sm[2], 'https://') === 0) { $shref = $sm[2]; $sclass .= ' bb-menu-external'; } else { $shref = bb_get_option('path') . 'bb-admin/' . bb_get_admin_tab_link($sm[2]); } if ($sm[2] == $bb_current_submenu[2]) { $sclass .= ' bb-menu-sub-current'; } $sr .= "\t\t\t\t\t\t\t" . '<li class="' . esc_attr(trim($sclass)) . '"><a href="' . esc_url($shref) . '">' . esc_html($sm[0]) . '</a></li>' . "\n"; } $sr .= "\t\t\t\t\t\t" . '</ul>' . "\n"; $sr .= "\t\t\t\t\t" . '</div>' . "\n"; } if ($sr && !$no_submenu) { $class .= ' bb-menu-has-submenu'; if ($m[2] == $bb_current_menu[2]) { $class .= ' bb-menu-open'; } } $r .= "\t\t\t\t" . '<li' . $id . ' class="' . esc_attr(trim($class)) . '"><a href="' . $href . '">'; if ($m[2] !== 'separator') { $r .= '<div class="bb-menu-icon"></div>'; } $r .= '<span>' . $m[0] . '</span></a>' . "\n"; if ($sr && !$no_submenu) { $r .= '<div class="bb-menu-toggle"></div>'; $r .= $sr; } $r .= "\t\t\t\t" . '</li>' . "\n"; } $r .= "\t\t\t" . '</ul>' . "\n"; echo $r; }
function mass_edit() { if (!bb_current_user_can('browse_deleted')) { die(__("Now how'd you get here? And what did you think you'd be doing?")); } add_action('bb_get_option_page_topics', 'mass_edit_topic_limit', 250); global $bbdb, $bb_post_cache, $bb_user_cache, $bb_posts, $bb_post, $page, $mass_edit_options; if (isset($_GET['mass_edit_reset'])) { bb_delete_option('mass_edit_options'); wp_redirect(remove_query_arg(array('mass_edit_options', 'mass_edit_reset'))); } if (!empty($_POST['mass_edit_save_options'])) { $mass_edit_options['mass_edit_columns'] = implode(",", array_unique(array_map('trim', explode(",", strtolower(stripslashes($_POST['mass_edit_columns'] . ", checkbox , excerpt , name , meta , actions")))))); $mass_edit_options['mass_edit_css'] = stripslashes($_POST['mass_edit_css']); bb_update_option('mass_edit_options', $mass_edit_options); wp_redirect(remove_query_arg(array('mass_edit_options', 'mass_edit_reset'))); // may not work since headers are already sent } echo '<div style="text-align:right;margin-bottom:-1.5em;">'; if (isset($_GET['mass_edit_options'])) { echo '[ <a href="' . bb_get_admin_tab_link("mass_edit") . '&mass_edit_reset=1">Reset To Defaults</a> ]'; } else { echo '[ <a href="' . bb_get_admin_tab_link("mass_edit") . '&mass_edit_options=1">Settings</a> ]'; } echo '</div>'; echo "<h2><a style='color:black;border:0;text-decoration:none;' href='" . bb_get_admin_tab_link("mass_edit") . "'>" . __('Mass Edit') . "</a></h2>"; if (!isset($mass_edit_options)) { $mass_edit_options = bb_get_option('mass_edit_options'); } if (!isset($mass_edit_options['mass_edit_columns']) || is_array($mass_edit_options['mass_edit_columns'])) { $mass_edit_options['mass_edit_columns'] = "checkbox , excerpt , name , meta , actions"; bb_update_option('mass_edit_options', $mass_edit_options); } $mass_edit_columns = explode(",", strtolower($mass_edit_options['mass_edit_columns'])); array_walk($mass_edit_columns, create_function('&$arr', '$arr=trim($arr);')); if (isset($_GET['mass_edit_options'])) { ?> <form action="<?php echo bb_get_admin_tab_link("mass_edit"); ?> " method="post" id="mass-edit-options"> <fieldset><legend><strong>Mass Edit Column Order</strong> - default: checkbox , excerpt , name , meta , actions</legend> <input name="mass_edit_columns" id="mass_edit_columns" type="text" size="50" value="<?php echo $mass_edit_options['mass_edit_columns']; ?> " /> <span style="padding-left:2em;" class=submit><input class=submit type="submit" name="mass_edit_save_options" value="<?php _e('Save Options'); ?> »" /></span> </fieldset> <fieldset><legend><b>Mass Edit CSS</b></legend> <textarea name="mass_edit_css" id="mass_edit_css" cols="100" rows="10"><?php echo $mass_edit_options['mass_edit_css']; ?> </textarea> </fieldset> </form> <br clear=both /> <hr /> <?php } /* add_filter( 'get_topic_where', 'no_where' ); add_filter( 'get_topic_link', 'bb_make_link_view_all' ); $bb_post_query = new BB_Query_Form( 'post',array( 'post_status' => 0, 'count' => true )); $bb_posts =& $bb_post_query->results; $total = $bb_post_query->found_rows; */ if (!empty($_POST['mass_edit_delete_posts'])) { bb_check_admin_referer('mass-edit-bulk-posts'); $i = 0; $bbdb->hide_errors(); // bbPress still has some db function issues with topic delete/undelete foreach ($_POST['mass_edit_delete_posts'] as $bb_post_id) { // Check the permissions on each $bb_post_id = (int) $bb_post_id; // $bb_post_id = $bbdb->get_var("SELECT post_id FROM $bbdb->posts WHERE post_id = $bb_post"); // $authordata = bb_get_usermeta( $bbdb->get_var("SELECT poster_id FROM $bbdb->posts WHERE ID = $bb_post_id") ); if (bb_current_user_can('delete_posts', $bb_post_id)) { if (!empty($_POST['mass_edit_spam_button'])) { bb_delete_post($bb_post_id, 2); } if (!empty($_POST['mass_edit_delete_button'])) { bb_delete_post($bb_post_id, 1); } if (!empty($_POST['mass_edit_undelete_button'])) { bb_delete_post($bb_post_id, 0); } ++$i; } } $bbdb->show_errors(); // bbPress still has some db function issues with topic delete/undelete // $bbdb->flush(); // global $bb_cache,$bb_post_cache, $bb_topic_cache; unset($bb_cache); unset($bb_post_cache); unset($bb_topic_cache); echo '<div id="message" class="updated fade" style="clear:both;"><p>'; if (!empty($_POST['mass_edit_spam_button'])) { printf(__('%s posts marked as spam.'), $i); } if (!empty($_POST['mass_edit_delete_button'])) { printf(__('%s posts deleted.'), $i); } if (!empty($_POST['mass_edit_undelete_button'])) { printf(__('%s posts undeleted.'), $i); } echo '</p></div>'; } if (isset($_GET['post_text'])) { $post_text = substr($bbdb->escape($_GET['post_text']), 0, 100); } else { $post_text = ""; } if (isset($_GET['post_author'])) { $post_author = substr($bbdb->escape($_GET['post_author']), 0, 30); } else { $post_author = ""; } if (isset($_GET['post_status'])) { $post_status = substr($bbdb->escape($_GET['post_status']), 0, 3); } else { $post_status = "0"; } if (isset($_GET['post_order'])) { $post_order = $_GET['post_order'] == "ASC" ? "ASC" : "DESC"; } else { $post_order = "DESC"; } if (isset($_GET['exact_match'])) { $exact_match = intval($_GET['exact_match']); } else { $exact_match = 0; } if (isset($_GET['per_page'])) { $per_page = intval(substr($bbdb->escape($_GET['per_page']), 0, 3)); } else { $per_page = "20"; } $offset = (intval($page) - 1) * $per_page; // if (isset($_GET['page'])) {} else {$offset = 0;} $query = " FROM {$bbdb->posts} "; if ($post_text || $post_author || $post_status != "all") { $query .= " WHERE "; } if ($post_text) { if ($exact_match) { $query .= " (post_text REGEXP '[[:<:]]" . $post_text . "[[:>:]]'\tOR poster_ip = '" . $post_text . "') "; } else { $query .= " (post_text LIKE '%{$post_text}%' OR poster_ip LIKE '%{$post_text}%' ) "; } } if ($post_author) { $authors = "SELECT ID FROM {$bbdb->users} WHERE "; $authors .= $exact_match ? " (user_login REGEXP '[[:<:]]" . $post_author . "[[:>:]]') " : " (user_login LIKE '%{$post_author}%') "; $authors .= " LIMIT 99"; if ($authors = $bbdb->get_results($authors)) { if (is_array($authors)) { foreach ($authors as $key => $value) { $trans[] = $value->ID; } $authors = join(',', $trans); } } else { $authors = "-1"; } $query .= ($post_text ? " AND " : "") . " poster_id IN ({$authors}) "; } if ($post_status != "all") { $query .= ($post_text || $authors ? " AND " : "") . " post_status = '{$post_status}' "; } $restrict = " ORDER BY post_time {$post_order} LIMIT {$offset},{$per_page}"; // echo $query; // diagnostic $total = $bbdb->get_var("SELECT COUNT(*) " . $query); // intval(bb_count_last_query($query)); if ($total) { $bb_posts = $bbdb->get_results("SELECT * " . $query . $restrict); } else { unset($bb_posts); } ?> <form action="<?php echo bb_get_admin_tab_link("mass_edit"); ?> " method="get" id="post-search-form" class="search-form"> <fieldset><legend><?php _e('Show Posts or IPs That Contain …'); ?> </legend> <input name="post_text" id="post-text" class="text-input" type="text" value="<?php echo wp_specialchars($post_text); ?> " size="30" /> </fieldset> <?php /* selection by forum and tag not included in initial versions <fieldset><legend>Forum …</legend> <select name="forum_id" id="forum-id" tabindex="5"> <option value="0">Any</option> <option value="1"> bbPress chat</option> </select> </fieldset> <fieldset><legend>Tag…</legend> <input name="tag" id="topic-tag" class="text-input" value="" type="text" /> </fieldset> */ ?> <fieldset><legend>Post Author…</legend> <input name="post_author" id="post-author" class="text-input" type="text" value="<?php if (isset($_GET['post_author'])) { echo wp_specialchars($_GET['post_author'], 1); } ?> " /> </fieldset> <fieldset><legend>Post Status …</legend> <select name="post_status" id="post-status"> <option value="0" <?php echo $post_status == 0 ? 'selected="selected"' : ''; ?> >Visible</option> <option value="1" <?php echo $post_status == 1 ? 'selected="selected"' : ''; ?> >Deleted</option> <option value="2" <?php echo $post_status == 2 ? 'selected="selected"' : ''; ?> >Spam</option> <option value="all" <?php echo $post_status == "all" ? 'selected="selected"' : ''; ?> >All</option> </select> </fieldset> <fieldset><legend>Sort Order …</legend> <select name="post_order" id="post-order"> <option value="DESC" <?php echo $post_order == "DESC" ? 'selected="selected"' : ''; ?> >Newest</option> <option value="ASC" <?php echo $post_order == "ASC" ? 'selected="selected"' : ''; ?> >Oldest</option> </select> </fieldset> <fieldset><legend>Per Page</legend> <select name="per_page" id="per-page"> <option value="20" <?php echo $per_page == 20 ? 'selected="selected"' : ''; ?> >20</option> <option value="50" <?php echo $per_page == 50 ? 'selected="selected"' : ''; ?> >50</option> <option value="100" <?php echo $per_page == 100 ? 'selected="selected"' : ''; ?> >100</option> </select> </fieldset> <fieldset><legend>Exact Match</legend> <input type="hidden" name="plugin" value="mass_edit" /> <span style="padding-left:1em;"><input style="height:1.4em;width:1.4em;" name="exact_match" id="exact-match" class="checkbox" type="checkbox" value="1" <?php echo $exact_match ? 'checked="checked"' : ''; ?> /></span> <span style="padding-left:1em;" class=submit><input class=submit type="submit" name="submit" value="<?php _e('Search'); ?> »" /></span> </fieldset> </form> <?php if ($total) { echo $pagelinks = "<p style='clear:left'>[ " . ($total > $per_page ? "showing " . (($page - 1) * $per_page + 1) . " - " . ($total < $page * $per_page ? $total : $page * $per_page) . " of " : "") . "{$total} posts found ] " . '<span style="padding-left:1em">' . get_page_number_links($page, $total) . "</span></p>"; } if ($bb_posts) { // lazy cache loading to radically reduce query count foreach ($bb_posts as $bb_post) { $users[$bb_post->poster_id] = $bb_post->poster_id; $topics[$bb_post->topic_id] = $bb_post->topic_id; } bb_cache_users($users); unset($users); $topics = join(',', $topics); $topics = $bbdb->get_results("SELECT topic_id,topic_title,topic_slug FROM {$bbdb->topics} WHERE topic_id IN ({$topics})"); $topics = bb_append_meta($topics, 'topic'); unset($topics); echo '<form name="deleteposts" id="deleteposts" action="" method="post"> '; bb_nonce_field('mass-edit-bulk-posts'); echo '<table class="widefat"> <thead> <tr>'; foreach ($mass_edit_columns as $position) { switch ($position) { case "checkbox": echo '<th scope="col"><input type="checkbox" onclick="checkAll(this,document.getElementById(\'deleteposts\'));" /></th>'; break; case "excerpt": echo '<th scope="col" width="90%">' . __('Post Excerpt') . '</th>'; break; case "name": echo '<th scope="col">' . __('Name') . '</th>'; break; case "meta": echo '<th scope="col">' . __('Meta') . '</th>'; break; case 'actions': echo '<th scope="col" colspan="2">' . __('Actions') . '</th>'; break; } } echo '</tr></thead>'; foreach ($bb_posts as $bb_post) { $bb_post_cache[$bb_post->post_id] = $bb_post; // yes this is naughty but lazy workaround for using internal functions without extra mysql queries switch ($bb_post->post_status) { case 0: $del_class = ''; break; case 1: $del_class = 'deleted'; break; case 2: $del_class = 'spam'; break; default: $del_class = apply_filters('post_del_class', $bb_post->post_status, $bb_post->post_id); } ?> <tr id="post-<?php echo $bb_post->post_id; ?> " <?php alt_class('post', $del_class); ?> > <?php foreach ($mass_edit_columns as $position) { switch ($position) { case "checkbox": ?> <td><?php if (bb_current_user_can('edit_post', $bb_post->post_id)) { ?> <input type="checkbox" name="mass_edit_delete_posts[]" value="<?php echo $bb_post->post_id; ?> " /><?php } ?> </td> <?php break; case "excerpt": ?> <td><?php echo "<a class=metext href='" . mass_edit_get_post_link() . "'>[<strong>" . get_topic_title($bb_post->topic_id) . "</strong>] " . mass_edit_scrub_text($bb_post->post_text, $post_text, 45, $exact_match) . '</a>'; ?> </td> <?php break; case "name": ?> <td><a href="<?php echo attribute_escape(get_user_profile_link($bb_post->poster_id)); ?> "><?php echo get_user_name($bb_post->poster_id); ?> </a></td> <?php break; case "meta": ?> <td><span class=timetitle title="<?php echo date("r", strtotime(bb_get_post_time())); ?> "><?php printf(__('%s ago'), bb_get_post_time()); ?> </span> <?php post_ip_link(); ?> </td> <?php break; case "actions": ?> <td><a href="<?php post_link(); ?> "><?php _e('View'); ?> </a> <?php if (bb_current_user_can('edit_post', $bb_post->post_id)) { post_edit_link(); } ?> </td> <td><?php if (bb_current_user_can('edit_post', $bb_post->post_id)) { post_delete_link(); } ?> </td> <?php } } echo '</tr>'; } // end foreach unset($bb_posts); ?> </table> <?php if ($total) { echo $pagelinks; } ?> <p class="submit"> <input type="submit" class="deleted" name="mass_edit_delete_button" value="<?php _e('Delete Checked posts »'); ?> " onclick="var numchecked = getNumChecked(document.getElementById('deleteposts')); if(numchecked < 1) { alert('<?php _e("Please select some posts to delete"); ?> '); return false } return confirm('<?php printf(__("You are about to delete %s posts \\n \\'Cancel\\' to stop, \\'OK\\' to delete."), "' + numchecked + '"); ?> ')" /> <input type="submit" class="spam" name="mass_edit_spam_button" value="<?php _e('Mark Checked posts as Spam »'); ?> " onclick="var numchecked = getNumChecked(document.getElementById('deleteposts')); if(numchecked < 1) { alert('<?php _e("Please select some posts to mark as spam"); ?> '); return false } return confirm('<?php printf(__("You are about to mark %s posts as spam \\n \\'Cancel\\' to stop, \\'OK\\' to spam."), "' + numchecked + '"); ?> ')" /> <input type="submit" class="normal" name="mass_edit_undelete_button" value="<?php _e('Undelete Checked posts »'); ?> " onclick="var numchecked = getNumChecked(document.getElementById('deleteposts')); if(numchecked < 1) { alert('<?php _e("Please select some posts to delete"); ?> '); return false } return confirm('<?php printf(__("You are about to undelete %s posts \\n \\'Cancel\\' to stop, \\'OK\\' to undelete."), "' + numchecked + '"); ?> ')" /> </form> <div id="ajax-response"></div> <?php } else { ?> <p style="clear:both;"> <?php if ($exact_match) { echo " <strong>" . __('No results found for exact match.') . " "; echo ' <a href="' . attribute_escape(remove_query_arg('exact_match')) . '">' . __("Try non-exact?") . '</a></strong> '; } else { echo "<strong>" . __('No results found.') . "</strong>"; } ?> </p> <?php } // end if ($bb_posts) ?> </div> <?php }